不将实施细节泄漏给系统的客户被认为是最佳实践。例如,不要用“ Powered by foo”标题响应,等等。
System.Security.Claims.ClaimTypes
包含各种以Microsoft为中心的架构,这是使用ASP.NET Core的提示。
例如Role
的声明是:"http://schemas.microsoft.com/ws/2008/06/identity/claims/role"
。
所以:
答案 0 :(得分:1)
我认为这有点牵强,因为这些类型来自较旧的WIF。因此,他们没有指向asp.net核心。
您可以使用其他名称。在权限中添加声明(而不是角色)以设置声明类型。角色的声明类型可能是“角色”。
为了映射声明,请配置资源:
services
.AddAuthentication()
.AddJwtBearer(c =>
{
c.TokenValidationParameters.RoleClaimType = "role";
c.TokenValidationParameters.NameClaimType = "name";
})
但是“问题”仍然是公共令牌是JWT。真正隐藏此类信息的唯一方法是不将其放入令牌中,而是选择其他设计。
答案 1 :(得分:1)
我也遇到了同样的问题,这是我的解决方法
var roles = await _userManager.GetRolesAsync(user);
foreach (var role in roles)
{
claims.Add(new Claim(ClaimTypes.Role, role));
claims.Add(new Claim("roles", role));
}
具有“ ClaimTypes.Role”的也添加为“角色”。这对我有用。