我使用ASP.NET Core与OpenIddict,JWT,资源所有者授予和基于声明的角色。没有执行任何政策的授权正在按预期工作。
我想对某些控制器和操作方法强制执行授权策略。我的所有用户都有角色声明,因此我在启动时执行了以下操作:
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", p => p.RequireClaim("Admin");
});
我在动作方法上做了以下几点:
[Authorize("Admin")]
public async Task<string> Index()
{
return "Yes";
}
没有&#34;管理员&#34;,在添加&#34; Admin&#34;之后,我能够访问该资源。我不能。
我假设因为我生成的JWT令牌没有用户声明。
答案 0 :(得分:4)
您需要请求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