1

多数の API を保護するために、複数のクライアントにトークンを提供するセキュリティ バックエンドを設計しています。ユーザー データベースは Azure B2C https://azure.microsoft.com/en-us/services/active-directory-b2c/にあります。ユーザー アクセスに基づいて異なるクレームを含む API トークンを作成したいと考えています。例: ユーザー A は /api/stores/11 を呼び出すことができますが、/api/stores/12 を呼び出すことはできません。

使用例:

  • ユーザー ログインとトークン生成のために Azure B2C に直接アクセスするアプリ (iPad)。このトークンを使用して、ユーザー プロファイルのソーシャル インタラクションなどの API を呼び出します。
  • アクセス権が制限された同じ API (異なるモジュール) を呼び出す外部システム。外部システムには、Azure B2C からも資格情報を取得する管理者がいます。

これまでの私の解決策:

  1. Azure B2C ログインを呼び出してユーザーの資格情報を確認するIdentityServer4 ( https://github.com/IdentityServer/IdentityServer4 )。
  2. 認証が (コールバックで) 完了すると、IdentityServer はユーザーが外部システムに対して持っているクレーム (アクセス権など) を適用し、トークンを生成します。IdentityServer には、ユーザー ID/電子メールをアクセス権に接続するローカル データベースがあります。
  3. API はマルチテナント認証プロバイダーを使用して、Azure B2C からのトークンと "中間" の IdentityServer の両方をサポートします。プロバイダーは、それぞれ IdentityServerAuthentication と OpenIdConnectAuthentication です。

私の質問は、これが実行可能な解決策であるかどうかです。複雑すぎませんか?この場合、あなたはどうしますか?2 番目のユーザー ログインを実装したくありません。また、Azure B2C はきめ細かいアクセス権をサポートしていないようです。

前もって感謝します。

4

2 に答える 2

1

これは、IdentityServer4 で非常に実行可能です。お客様のユースケースに対応できます。サンプルをチェックすることをお勧めします。

于 2016-08-29T17:38:29.133 に答える