1

https://github.com/tonywr71/SnazzleAngular2 OpenIddictと認可役割

残念ながら、私は少しこだわっています。 ASOS認証を正常に実装しました。トークンはconnect/tokenメソッドから返され、ヘッダー内のベアラトークンを使用してカスタムメソッドを呼び出すことができ、正常に承認されます。

現在、2つの問題が残っています。 1つは、User.IdentityオブジェクトのNameフィールドが設定されていないことです。私はクレームにユーザー名を追加することでこれを回避しました。第2に、私はロールをポピュレートして、ロールをAuthorize属性で使用できるようにします。 Startup.csファイルでAsp.Net Core Identityを有効にし、データベースを構成しました。ですから、私は本当にwebapiメソッドにAuthorize属性を置き、その属性に許可されているロールを設定できるようにしたいと思います。

名前と役割を入力する方法を知りたいですか?

答えて

2

どのように名前とロールに値を設定するのですか?

ユーザ名を取得するには、標準profileのスコープを要求する必要があります。ロールには、rolesを追加します。

例えば:動作しているようです

grant_type=password&username=johndoe&password=A3ddj3w&scope=openid%20profile%20roles 
+0

おかげで、。クライアントから提出された役割に対して権限を与えることによって、何らかのセキュリティ原則に違反しているように見えます。これが私が最初に見落とした理由です。そのようにしなければならない理由がありますか? – tone

+0

ロールはクライアントによって「サブミット」されません。 "役割"の範囲は、OpenIddictがアクセストークンとアイデンティティトークンの両方でそれらを戻す(公開する)ことを許可するためのものです。アイデンティティトークンはクライアントアプリケーションで読み取り可能であるため(JWTの場合はアクセストークンも同様)、データエクスポージャーのリスクがあります。そのため、開発者がこの事実を認識できるように追加のスコープが使用されます。 – Pinpoint

+0

私はまだここで少し混乱しています。 「ロール」スコープを追加しない場合、Authorize属性のRolesプロパティは認識されず、何も正常に認証されません。私が少し奇妙に思われるように、Rolesをサーバーで承認するには、クライアントから「ロール」スコープを送信する必要があります。クライアントの要求に「ロール」スコープを設定すると、ロールのリストもクライアントに送信されます。これは本当ですか? – tone

関連する問題