3

Azure AD テナントで MS Graph に対して認証を行うアプリがあり、MSAL を使用して を呼び出していますacquireTokenSilent。私のアプリは、mfa を含む amr フィールドを持つ JWT アクセス トークンを受け取ることがあります。具体的には次のとおりです。

amr: [
  "pwd",
  "rsa",
  "mfa"
 ]

これにより、OBO トークン交換が成功します。

私のアプリは、wia を含む amr フィールドを持つ JWT アクセス トークンを数回受け取りました。

amr: [
  "wia"
 ]

このトークンを OBO トークンに交換しようとすると失敗します。

アプリの認証コードにコード変更を加えていません。acquireTokenSilent行動の違いの原因は何ですか?

ありがとう!

編集

このアプリは、ReactJS を使用して TypeScript で記述された SPA です。ユーザーはコンテンツをロードする前に AAD でログインする必要があり、アプリはこれを実現するために React メソッドloginRedirectでテナント オーソリティを呼び出します。componentDidMount

ユーザーが承認済みソース (作成した中間層サービス) への呼び出しを開始すると、アプリは acquireTokenSilent を呼び出して、中間層サービスの構成 API のスコープを持つトークンを取得します。次に、中間層サービスを呼び出し、Bearer プレフィックス付きのヘッダーでトークンを送信します。そのサービスは、トークンを OBO トークンと交換します。

Azure portal に AAD アプリの登録があり、AAD Graph User.Read と中間層サービスの構成 API に API アクセス許可が委任されています。

中間層サービスは (アプリのacquireTokenSilent呼び出しから取得した) トークンを受け取り、それを OBO トークンと交換して、MS Graph とrequested_token_use=on_behalf_of.

acquireTokenSilent から受信した JWT アクセス トークンに をamr含むフィールドがwiaある場合、中間層サービスのトークン交換で、MFA を必要とする条件付きアクセス クレーム チャレンジに関するエラーが発生します。

4

1 に答える 1