2016-04-04 18 views
0

アイデンティティ・サーバー3およびOAuth2のスコープに関する質問があります。Identity Serverのスコープ

一般的に、スコープの理解は、リソースを「グループ化」し、スコープで定義されたリソースに必要な主張を持つことです。

ここでは、oauth2クライアントの資格情報とOIDCハイブリッドフローを使用します。 1つのクライアントはアイデンティティ・サーバーで1つのフローしか提供できないため、これらのフローに対して異なるクライアントを作成する必要があります。

クライアントクレデンシャルフローの場合、スコープにはクレームが存在しないため、「リソース」タイプが必要です。ハイブリッドフローでは、サブクレームなどと「同一性」があります。

フローごとに異なるスコープを作成する必要がありますか?私は "myservice.client"、 "myservice.hybrid"またはsthのようなスコープを見たことがないので不思議です。そうですね。私の計画は、両方のフローに対して同じスコープを作成することでしたが、異なる情報を含んでいるため、これは「正しく」ない可能性があります。

私がしたくないことは、さまざまなフローに対して異なるAPIメソッドを使用することです。ユーザがいる場合、クライアントはハイブリッドフローを介してユーザコンテキストと接続し、クライアント認証を介してそれ自体を認証する必要があります。

私のコントローラには、承認["ある範囲"]しかなければなりません。 AuthorizationPoliciesに「OR」を付けることは可能ですか?そのため、1つの名前と複数のスコープで

編集:最後の質問のために、私が見つけた:

あなたはまた、例えば、

options.AddPolicyを 請求の要件の一部として、カンマ区切りのリストを指定することもできます(「MustBeGroot "、policy => policy.RequireClaim("権限 "、"読み取り、更新 "));アクセス許可クレームに値がある場合は 承認を渡し、Readまたは 更新の場合は許可します。

右のリンクはhttp://docs.asp.net/en/latest/security/authorization/claims.htmlです。 カンマ区切りの文字列ではなく、リストを指定する必要があります。

答えて

1

誤解のカップルがあります -

  • は、あなたが資格情報を単一のクライアントと流れの両方のハイブリッドおよびクライアントを使用することができます - クライアントクラスにAllowClientCredentialsOnly設定を使用します。

https://identityserver.github.io/Documentation/docsv2/configuration/clients.html

  • 両方アイデンティティとリソースのスコープは、特許請求の範囲を持つことができます。 IDスコープはアイデンティティトークンの内容を定義し、リソーススコープはアクセストークンの内容を定義します。ユーザー認証では、IDトークンを使用します。アクセストークンを使用するAPIアクセスの場合は、

  • フローごとに異なるスコープを作成する必要はありません。

https://identityserver.github.io/Documentation/docsv2/configuration/scopesAndClaims.html

  • 最後の部分は分離する必要がasp.netコア認可質問です。
+0

ご回答ありがとうございます。私はAllowClientCredentialsOnlyプロパティを見逃しました。これは素晴らしいことです。スコープに関するもう1つの説明:APIにアクセスするためのスコープは、常にクライアントとハイブリッドの両方のフローのリソーススコープになります。ハイブリッドフローに必要なものは、追加のIDスコープです。私は今、それを得たと思う、ありがとう。 – Senj

関連する問題