私はいくつかのクライアントのためにトークンを提供するはずのセキュリティバックエンドを設計しており、多くのAPIを保護しています。ユーザーデータベースはAzure B2C https://azure.microsoft.com/en-us/services/active-directory-b2c/です。 ユーザーアクセスに基づいて異なる主張を含むAPIトークンを作成したいとします。例:ユーザーAは/ api/stores/11を呼び出せますが、/ api/stores/12は呼び出せません。トークン生成のためのユーザ認証情報、プライベートIdentityServerの外部認証プロバイダの使用
ユースケース:ユーザーのログインおよびトークン生成のためのAzure B2Cに直接行く
- アプリ(アプリ)。このトークンを使用して、ユーザープロファイルのソーシャルインタラクションなどのAPIを呼び出します。
- アクセス権の制限と同じAPI(異なるモジュール)を呼び出す外部システム。外部システムには管理者がおり、Azure B2Cから資格を取得します。これまで
私のソリューション:
- IdentityServer4(https://github.com/IdentityServer/IdentityServer4)ユーザー資格情報を検証するためのAzureのB2Cログインを呼び出します。
- 認証が完了すると(コールバック時)、IdentityServerは外部システムに対するユーザーの所有権(アクセス権など)を適用し、トークンを生成します。 IdentityServerには、ユーザーIDと電子メールをアクセス権で接続するローカルデータベースがあります。
- APIは、マルチテナント認証プロバイダを使用して、Azure B2Cと私の "中間" IdentityServerのトークンの両方をサポートします。プロバイダはそれぞれIdentityServerAuthenticationとOpenIdConnectAuthenticationです。
これは実行可能な解決策ですか?それはあまりにも複雑ですか?この場合、あなたはどうしたら違うのですか? 2番目のユーザーログインを実装する必要はありません。Azure B2Cは細かいアクセス権をサポートしていないようです。
ありがとうございます。
ありがとう!私の唯一の懸念事項は、アプリがID4を指し示すならば、どのようにアプリユーザーがネイティブアプリからサインイン/アップするのですか? ID4はAzure B2Cにリダイレクトされ、おそらくアプリに返信されません。私はネイティブのアプリの動作について多くのことを知らないので、私が不明な場合はごめんなさい。 –
ID4は真ん中で透明になります。すべての構成の問題。 – leastprivilege