2016-09-09 12 views
0

リソースサーバー(RS)が複数のデータベースに接続でき、マルチテナントになるシナリオがあります。それは私が言うことができる環境構成を持っています:Env AはデータベースAを指し、テナントAに属します。 Env BはデータベースBを指し、テナントBに属します。OAuth2アクセストークン内のリソースサーバーに特定の情報を追加する正しい方法はありますか?

私たちのデスクトップアプリケーションは、その情報をすべての呼び出しでRSに送信されるデータ構造に格納し、WebアプリケーションはASP.NETセッション内にその情報を格納します。ユーザーはログイン時に環境を選択します。

ここでは、APIを完全にRESTサービスに移行し、IdentityServer4を使用してoAuth2でAPIを保護しています。

私はその環境値をAPIに送信する必要があり、それはアクセストークンの一部でなければならないと思います。

最初の質問です。正しいですか?アクセストークンにはそのような情報がありますか?

2番目は次のとおりです。アクセストークン内、つまりClaimsPrincipal内に、その値を要求として注入するために拡張する必要がある、最高のIdentityServer4サービスはどれですか。

3つ目は、ログイン時に環境を選択するユーザーがいないことがあります(たとえば、クライアントの資格情報の付与など)。この場合、クライアントが主張する正しい治療環境ですか?動的なクライアントの申し立てを行う方法はありますか?

ご迷惑をおかけして申し訳ありません!

よろしく、 ディオゴ

答えて

1

その主張は、ユーザー(またはクライアント)についてであればアイデンティティ - はい - それはトークンの候補です。

APIを表すリソーススコープにクレームを追加します。これにより、クレームタイプがプロファイルサービスで要求され、トークンに追加することができます。

クライアントクレームは動的ではありません。

+0

まあ、そのクレームはログイン時のユーザーの選択です。したがって、私のプロフィールサービスの中で、私はセッションからそのクレームの価値を得ることができます、そして、それをトークンに加えてください。 クライアントの資格情報については、環境に関する特定の主張を持つ複数のクライアントを作成する唯一の方法があります。このようにして、DefaultClaimsServiceはすでにそれをトークンに追加します。 このアプローチについてどう思いますか? –

+0

音がいいです – leastprivilege

関連する問題