Identityserver4 添加UserClaims';角色';识别资源
为什么要添加,或者将UserClaims“角色”添加到IdentityResource有什么好处Identityserver4 添加UserClaims';角色';识别资源,identityserver4,Identityserver4,为什么要添加,或者将UserClaims“角色”添加到IdentityResource有什么好处 new IdentityResource { Name = "role", UserClaims = new List<string> {"role"} } newidentityresource{Name=“role”,UserClaims=newlist{“role”} 不需要将角色添加到令牌 我只能通过将UserClaims“role”添加到ApiResource来将角色添加到
new IdentityResource { Name = "role", UserClaims = new List<string> {"role"} }
newidentityresource{Name=“role”,UserClaims=newlist{“role”}
不需要将角色添加到令牌
我只能通过将UserClaims“role”添加到ApiResource来将角色添加到令牌
当我从IdentityResource中删除UserClaims“role”时,我的项目也可以正常工作。当用户尝试使用特定资源时,需要标识的
'UserClaims'
才能包含在其身份令牌中
如果此资源是一个API,并且您定义了UserClaim“Admin”
new IdentityResource {
Name = "MyAPI", UserClaims = new List<string> {"Admin"}
}
谢谢@aaronR,但我特别问“角色”,为什么我们在IdentityResource中像新的IdentityResource{Name=“roles”,UserClaimTypes={JwtClaimTypes.role}一样放置JwtClaimTypes.role非常感谢@aaronR,在您的项目示例中,在config.cs文件中:new IdentityResource(“dataeventrecordsscope”,new[]{“role”,“admin”,“user”,….“角色”在这里做什么?在ApiResource中的同一个文件中,我们添加了“角色”以将其包含在令牌中,但为什么我们将其放在IdentityResource alsoFYI中:这不是我自己的代码。让我看看是否可以为您回答这个问题。
var claims = principal.Claims.ToList();
claims = claims.Where(claim => context.RequestedClaimTypes.Contains(claim.Type)).ToList();
claims.Add(new Claim(JwtClaimTypes.GivenName, user.UserName));
//new Claim(JwtClaimTypes.Role, "admin"),
//new Claim(JwtClaimTypes.Role, "dataEventRecords.admin"),
//new Claim(JwtClaimTypes.Role, "dataEventRecords.user"),
//new Claim(JwtClaimTypes.Role, "dataEventRecords"),
//new Claim(JwtClaimTypes.Role, "securedFiles.user"),
//new Claim(JwtClaimTypes.Role, "securedFiles.admin"),
//new Claim(JwtClaimTypes.Role, "securedFiles")
if (user.IsAdmin)
{
claims.Add(new Claim(JwtClaimTypes.Role, "admin"));
}
else
{
claims.Add(new Claim(JwtClaimTypes.Role, "user"));
}
if (user.DataEventRecordsRole == "dataEventRecords.admin")
{
claims.Add(new Claim(JwtClaimTypes.Role, "dataEventRecords.admin"));
claims.Add(new Claim(JwtClaimTypes.Role, "dataEventRecords.user"));
claims.Add(new Claim(JwtClaimTypes.Role, "dataEventRecords"));
claims.Add(new Claim(JwtClaimTypes.Scope, "dataEventRecords"));
}
else
{
claims.Add(new Claim(JwtClaimTypes.Role, "dataEventRecords.user"));
claims.Add(new Claim(JwtClaimTypes.Role, "dataEventRecords"));
claims.Add(new Claim(JwtClaimTypes.Scope, "dataEventRecords"));
}