web-dev-qa-db-ja.com

トークンAzureB2Cにクレームを追加する

クレームが独自のサーバー(B2Cでは使用できない)のどこかに格納されている場合、Azure AD B2Cで発行する前に、トークンにカスタムクレーム(例としてユーザーサブスクリプションまたはロールリスト)を含める方法は何ですか?リクエストごとにストレージへの追加のラウンドトリップを回避するために、トークンにクレームを含めることを目標とします。

このトピックに関する調査により、私は次の方法にたどり着きました。

  1. Graph APIを介してカスタム属性を追加し、JWTに含めるように構成します。属性値は、データストレージと同期しておく必要があります。

  2. この記事のようなカスタムサインインポリシー https://docs.Microsoft.com/en-us/Azure/active-directory-b2c/active-directory-b2c-rest-api-step-custom =しかし、私がそれを正しく理解した場合、追加のステップ6は、制限のない方法で公開されているAPIへのユーザージャーニーです(秘密によって保護されていない要求は、提示されたUserIdによってユーザークレームを取得するために使用される可能性があります)?

  3. IdentityServer4フェデレーションゲートウェイ http://docs.identityserver.io/en/release/topics/federation_gateway.html 発行前にクレームを追加できるようにします。

9
st1

概説した最初の2つのメカニズムは、Azure ADB2Cが発行したトークンにカスタムクレームを含めるための最も一般的で推奨される方法です。

  1. カスタム属性JWTに含める を追加します。カスタム属性を有効にすることができます B2C UIを介して または Graph APIを介して 。 B2Cのこの属性の値を外部ソースと同期させるために、独自のメカニズムを構築する必要があります Graph APIを介して

  2. カスタムポリシー から 認証フローにステップを追加してRest APIを呼び出し、クレームを取得してトークンに含めることができます 。このRestAPIの呼び出しは、ユーザーのブラウザーではなくAzure AD B2Cサービスによって実行されるため、(クライアントからサービスへの呼び出しではなく)サービスからサービスへの呼び出しになり、使用するシークレットは保持されます。 Rest APIセーフ(Azure関数コードなど)を使用した認証。

10
Saca