2016-06-21 9 views
0

私は弊社でIdentityServer3を実装していますが、クライアントからクライアントへの許可を処理する方法については空白があります。IdentityServer3クライアントからクライアントへの認証

  • 私達は私達のユーザーがアクセスする複数のWebサイトのクライアントを持っている:

    これが我々の要求をまとめたものです。これらは、AuthorizationCodeフローを使用して構成されます。これらを呼び出すことができます。WebSiteClientAWebSiteClientB

  • 我々はWebSiteClientAへのアクセス権を持つクライアント(WebSiteClientAWebSiteClientB)またはユーザー(のいずれかによってアクセスすることができ、バックエンドサービスなど、複数のWebAPIのクライアントを持っているWebSiteClientB)。これをWebAPIClientAと呼ぶことができます。

注:当社は、ユーザーのIDだけでなく、すべてのクライアントを所有しています。

当初、私はしかし、私たちはClientCredentialsフローを使用してWebAPIClientAを設定することができます。そして、WebSiteClientAWebSiteClientBWebAPIClientAためのクライアントの資格情報を使用して構成されるだろうし、それが WebAPIClientAへのアクセスを必要、あるいは制限されたアクセストークンを生成する場合、アクセストークンを生成することがありました\このアクセストークンをユーザーに渡すと、ユーザーはWebAPIClientAに直接アクセスできます。

これは、1つの大きなものを除いて私たちの要件のほとんどすべてを満たしています。また、クライアントが他のクライアントに対してアクセスできるスコープを管理できるようにし、クライアントクレデンシャルを持つ誰でもClientCredentialsフローを使用するアプローチでそのクライアントの下にあるすべてのスコープのアクセストークンを生成することができます。すなわちWebSiteClientAWebAPIClientAのためのアクセストークンを生成することができるはず &書き込みスコープが、WebSiteClientBを読んでのみ読み取りスコープでWebAPIClientAのためのアクセストークンを生成することができるはずです。

私の心の中で、クライアントの\アイデンティティ・サーバーの会話は次のようになります。 WebSiteClientAは、スコープX用WebAPIClientAにアクセストークンのIDサーバに要求を行い、用クライアントシークレットを提供しますWebSiteClientA。アイデンティティ・サーバーは、[はい、あなたはWebSiteClientAを言うと、私たちは、あなたがここにアクセストークンで、スコープXとWebAPIClientAへのアクセス権を持っている私たちの記録から見ることができます。

これは可能ですか、これを完全に間違った方法で見ていますが、要件を満たすためのより良いアプローチがありますか?

答えて

1

あなたは2つのことについて話しているようですね。

最初に、APIではユーザーのIDが必要です。ユーザーIDを取得するには、信頼できるサブシステムを構築したい場合、または信頼できるサブシステムを必要としない場合(APIが信頼できるか、MVCクライアントがユーザーの識別子)。信頼できるサブシステムを実行する場合、MVCクライアントからAPIへのクライアント資格フローは問題ありません。トラステッド・サブシステムを必要としない場合は、暗黙的またはハイブリッド・フローを介してユーザーのアクセス・トークンを取得するためにMVCクライアントが必要です。

2番目の問題は、各クライアントが要求できるスコープを制御でき、クライアント構成上のAllowedScopes構成プロパティ(またはそれが呼び出されたもの)を介して行うことができる場合です。この設定は、上記の最初の問題と直交しています。

関連する問題