我使用ASP.NET核心与OpenIddict,JWT,资源所有者授权和基于索赔的角色。没有强制执行任何策略的授权正在按预期工作。
我想对一些控制人员和行动方法执行授权政策。我的所有用户都有角色声明,因此我在启动过程中做了以下操作:
services.AddAuthorization(options =>
{
options.AddPolicy("Admin", p => p.RequireClaim("Admin");
});
我在行动方法上做了以下几点:
[Authorize("Admin")]
public async Task<string> Index()
{
return "Yes";
}
如果没有"Admin",在添加"Admin“之后,我就可以访问资源了。
我假设这是因为我生成的JWT令牌没有用户声明。
发布于 2016-07-24 00:50:11
您需要请求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
https://stackoverflow.com/questions/38547157
复制相似问题