3

私はOpenIddict、JWT、リソースオーナーグラント、およびクレームベースのロールでASP.NETコアを使用しています。ポリシーを適用せずに承認が期待どおりに機能しています。OpenId Connectでのクレームベース認証

いくつかのコントローラとアクションメソッドで認可ポリシーを適用したいと思っています。すべての私のユーザーは、役割の主張を持っているので、私は起動時に次のようでした:

services.AddAuthorization(options => 
{ 
    options.AddPolicy("Admin", p => p.RequireClaim("Admin"); 
}); 

そして私はアクションメソッドに次のようでした:「管理者」がなければ

[Authorize("Admin")] 
public async Task<string> Index() 
{ 
    return "Yes"; 
} 

、私はアクセスすることができましたリソース、 "管理者"を追加した後、私はできません。

私は、生成されたJWTトークンにユーザークレームがないため、これを前提としています。

  • 私のJWTには、トークンが動作するためのユーザーロールの主張が含まれていますか?
  • OpenIddictを使用して役割の申し立てを送信するにはどうすればよいですか?

答えて

3

ロールがアクセストークンにコピーされるようにするには、rolesの範囲を要求する必要があります(将来変更される可能性があります)。

POST /connect/token HTTP/1.1 
Host: server.example.com 
Content-Type: application/x-www-form-urlencoded 

grant_type=password&username=johndoe&password=A3ddj3w&scope=roles 
+0

私はこれを行い、トークンにロールを返しました。しかし、私は自分の意図ではなく、主張ではなく役割を要求するというポリシーを変更しなければなりませんでしたが、今はうまくいきます。ありがとうございます。 – Adam

関連する問題