【发布时间】:2020-02-10 20:28:29
【问题描述】:
我没有运气让任何角色或策略属性在 .Net Core 3 中工作。我从带有身份验证的 .Net Core Angular 入门项目开始我的项目。 我认为这与新的 .AddDefault 方法有关,所以我尽可能地简化了它,但它仍然不起作用。
这是我的政策:
services.AddAuthorization(options =>
{
options.AddPolicy("IsAdmin", policy =>
policy.RequireClaim("role", "admin"));
});
这是我的控制器:
[Authorize(Policy = "IsAdmin")]
[Route("api/[controller]")]
public class AdminController : Controller
{
...
我创建了一个自定义配置文件服务,将声明添加到令牌中,
var claims = new List<Claim>();
if (await _userManager.IsInRoleAsync(user, "Admin"))
{
claims.Add(new Claim(JwtClaimTypes.Role, "admin"));
}
context.IssuedClaims.AddRange(claims);
在我的访问令牌中(来自 jwt.io):
配置服务的其他部分:
services.AddDefaultIdentity<ApplicationUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
...
services.AddAuthentication()
.AddIdentityServerJwt();
普通的[Authorize] 标记与其他控制器上的访问令牌一起工作正常。
当我使用访问令牌点击此控制器时,我会收到 403 响应
我错过了什么导致它无法正常工作?
【问题讨论】:
标签: asp.net-core .net-core identityserver4 asp.net-core-identity .net-core-3.0