問題タブ [msal.js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
877 参照

azure-active-directory - MSAL によって返される JWT トークンの amr フィールドに wia または mfa が含まれることがあるのはなぜですか?

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

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

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

このトークンを 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 を必要とする条件付きアクセス クレーム チャレンジに関するエラーが発生します。