@skaking

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Azure ADから発行されるアクセストークンが検証できない

解決したいこと

Azure ADから発行されたアクセストークンの署名検証を通したい。

現在、Azure AD(OP)とAWS ALB(RP)でOpenID Connect認証(OIDC)をしています。
AWS ALB配下にアプリ(EC2)があり、アプリ側でALBから連携される、「x-amzn-oidc-accesstoken」
を取得し、MSの公開鍵を使って署名検証していますが、下記エラーが発生しています。
恐らく、コードではなくALBかAzure ADの設定に問題がありそうな気がしていますが、どの辺を確認すればよいかわかっていません。
原因や確認ポイントがわかる方はいらっしゃいますでしょうか?

発生している問題・エラー

com.auth0.jwt.exceptions.signatureverificationexception:the token's signature resulted invalid when verified using the algorithm:sha256withrsa

該当するソースコード

ソースは掲載ができないのですが、qiitaのサイト(※1)の下方にある、公開鍵方式のRS256の署名検証コードを参考に実装しています
仕様ライブラリ:java-jwt

1.HTTPヘッダからアクセストークン(x-amzn-oidc-accesstoken)を取得
2.アクセストークンをデコード(JWT.decode)し、kidを取得
3.MSのエンドポイントからkidに関連する公開鍵情報(UrlJwkProvider)を取得
4.公開鍵情報(RSAPublicKey)を引数に、署名検証用のRS256アルゴリズム(Algorithm.RSA256)を生成
5.オプション(with~)は指定せずに、アクセストークンの署名を検証(verifier)

※1・・・https://qiita.com/kurotsu/items/909d2da7e79866b756ca

自分で試したこと

・x-amzn-oidc-accesstokenで取得したアクセストークンをjwt.ioに貼り付けたところ、
 headerとpayloadは問題なく表示されたが、ページ下方に「Invalid Signature」と表示されてしまう。
 プログラム云々の前に、発行されたトークン自体が署名検証できてない状態になっている?
・1のトークン部分をクラスメソッド様のサイト(※1)に記載のトークン(IDトークンの例ですが)に
 差し替えて実行したところ、「com.auth0.jwt.exceptions.TokenExpiredException:the token has
expired on 2021-09-12T14:37:05Z」 とエラーが変わった(検証は通った?)ため、
コード自体は問題なさそう(?)。jwt.ioでも「Signature Verified」と表示される。

※1・・・https://dev.classmethod.jp/articles/azure-ad-id-token-verify-jwt-to-pem/

他に調べたことで、理解できていないこと

・QAサイト(※1)では、「アクセストークンはMicrosoft Graph用にエンコードされているため、他からは検証できない」との回答がある。
 となると、アプリ側では「x-amzn-oidc-data」にある、IDトークンしか使えない??
・掲示板(※2)では、「Microsoft GraphのscopeをdefaultしたらOK」のような書き込みがあるが、
 Azure ADの「APIのアクセス許可」の「Microsoft Graph」を選択しても、
 defaultのような選択肢はなかった。現在は「User.Read」のみ。
・別の人(※3)ではAzure ADから発行されたアクセストークンが検証できたような記載になっている。。。

※1・・・https://learn.microsoft.com/en-us/answers/questions/300849/access-token-signature-validation
※2・・・https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/issues/609
※3・・・https://qiita.com/ham0215/items/ab39b3a2e45a597a75c1

0 likes

No Answers yet.

Your answer might help someone💌