多数の 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 からも資格情報を取得する管理者がいます。
これまでの私の解決策:
- Azure B2C ログインを呼び出してユーザーの資格情報を確認するIdentityServer4 ( https://github.com/IdentityServer/IdentityServer4 )。
- 認証が (コールバックで) 完了すると、IdentityServer はユーザーが外部システムに対して持っているクレーム (アクセス権など) を適用し、トークンを生成します。IdentityServer には、ユーザー ID/電子メールをアクセス権に接続するローカル データベースがあります。
- API はマルチテナント認証プロバイダーを使用して、Azure B2C からのトークンと "中間" の IdentityServer の両方をサポートします。プロバイダーは、それぞれ IdentityServerAuthentication と OpenIdConnectAuthentication です。
私の質問は、これが実行可能な解決策であるかどうかです。複雑すぎませんか?この場合、あなたはどうしますか?2 番目のユーザー ログインを実装したくありません。また、Azure B2C はきめ細かいアクセス権をサポートしていないようです。
前もって感謝します。