2017-08-13 20 views
0

アイデンティティプロバイダとしてAzure AD B2Cを使用してSPAを開発しています。私はMSAL JavaScript libraryを使用していますが、大部分は正常に動作しています。私は、Web APIのバックエンドのためにユーザーを作成し、ログインしてアクセストークンを取得することができます。Azure AD B2Cがリフレッシュトークンを返さない

現在のところ、B2Cエンドポイントはリフレッシュトークンを返さないため、アクセストークンが期限切れになると、リフレッシュトークンを使用して期限切れのアクセストークンをリフレッシュするためのUserAgentApplicationクラスのacquireTokenSilentメソッドが失敗します。

私のアプリケーションでは、「Webアプリケーション/ Web APIを含める」と「暗黙的なフローを許可する」が「はい」に設定されています。 APIアクセスセクションでは、「openid」スコープと「offline_access」スコープの両方に「ユーザーのプロファイルにアクセスする」という項目が表示されます。アプリケーション自体には "読み取り"、 "書き込み"、 "user_impersonation"のスコープがあります(問題があるかどうかはわかりません)。

enter image description here

「offline_accessは、」私のスコープに含まれていると私のイベントは、読み取り/書き込みスコープのように、アプリケーション1を作成しようとしただけでなく(として「https://mytenant.onmicrosoft.com/testapp/offline_access」)が、何も動いていないようにみえことを含んでいます。応答には更新トークンはありません。また、アクセストークンではないIDトークンに対しても応答はありません。

私が気付いたのは、作成したSignUp-SignInポリシーに移動してそこからエンドポイントを実行しようとすると、「offline_access」スコープがドロップダウンリストに表示されないことです。一番下に「実行エンドポイント」リンクをコピーし、実行前にURLにスコープを追加しても、応答にリフレッシュトークンは含まれません。

enter image description here

私は上部にあるリンクをクリックすると、私のエンドポイントについていくつかの詳細を与えるようだし、唯一の「OpenIDのは、」サポートスコープの下にあります。

私はここに何が欠けているかわからないので、任意のアイデアをいただければ幸いです。

答えて

2

今すぐ実行リンクがログインしimplicit flowを使用して認証要求を生成します。暗黙のフローは、定義により、あなたはセキュリティ上の理由からリフレッシュトークンを取得することはできません。したがって、ドロップダウンは有効ではないので、offline_accessのスコープは表示されません。リフレッシュトークンが必要な場合は、confidential code flowを実行する必要があります。選択した場合は、[今すぐ実行]リンクが生成するURLを手動で変更して、これを行うことができます。具体的には、URLで:

  1. セットresponse_type =コード(トークンではない)

  2. あなたがコードを入手したら作る、スコープ

のリストに "offline_access" を追加します。 documentationに示すようにPOST要求を発行し、リフレッシュトークンのコードを交換します。

関連する問題