私は弊社でIdentityServer3を実装していますが、クライアントからクライアントへの許可を処理する方法については空白があります。IdentityServer3クライアントからクライアントへの認証
- 私達は私達のユーザーがアクセスする複数のWebサイトのクライアントを持っている:
これが我々の要求をまとめたものです。これらは、AuthorizationCodeフローを使用して構成されます。これらを呼び出すことができます。WebSiteClientAWebSiteClientB
- 我々はWebSiteClientAへのアクセス権を持つクライアント(WebSiteClientA、WebSiteClientB)またはユーザー(のいずれかによってアクセスすることができ、バックエンドサービスなど、複数のWebAPIのクライアントを持っているかWebSiteClientB)。これをWebAPIClientAと呼ぶことができます。
注:当社は、ユーザーのIDだけでなく、すべてのクライアントを所有しています。
当初、私はしかし、私たちはClientCredentialsフローを使用してWebAPIClientAを設定することができます。そして、WebSiteClientAWebSiteClientBがWebAPIClientAためのクライアントの資格情報を使用して構成されるだろうし、それが WebAPIClientAへのアクセスを必要、あるいは制限されたアクセストークンを生成する場合、アクセストークンを生成することがありました\このアクセストークンをユーザーに渡すと、ユーザーはWebAPIClientAに直接アクセスできます。
これは、1つの大きなものを除いて私たちの要件のほとんどすべてを満たしています。また、クライアントが他のクライアントに対してアクセスできるスコープを管理できるようにし、クライアントクレデンシャルを持つ誰でもClientCredentialsフローを使用するアプローチでそのクライアントの下にあるすべてのスコープのアクセストークンを生成することができます。すなわちWebSiteClientAWebAPIClientAのためのアクセストークンを生成することができるはず &書き込みスコープが、WebSiteClientBを読んでのみ読み取りスコープでWebAPIClientAのためのアクセストークンを生成することができるはずです。
私の心の中で、クライアントの\アイデンティティ・サーバーの会話は次のようになります。 WebSiteClientAは、スコープX用WebAPIClientAにアクセストークンのIDサーバに要求を行い、用クライアントシークレットを提供しますWebSiteClientA。アイデンティティ・サーバーは、[はい、あなたはWebSiteClientAを言うと、私たちは、あなたがここにアクセストークンで、スコープXとWebAPIClientAへのアクセス権を持っている私たちの記録から見ることができます。
これは可能ですか、これを完全に間違った方法で見ていますが、要件を満たすためのより良いアプローチがありますか?