Identityserver4 添加UserClaims';角色';识别资源

Identityserver4 添加UserClaims';角色';识别资源,identityserver4,Identityserver4,为什么要添加,或者将UserClaims“角色”添加到IdentityResource有什么好处 new IdentityResource { Name = "role", UserClaims = new List<string> {"role"} } newidentityresource{Name=“role”,UserClaims=newlist{“role”} 不需要将角色添加到令牌 我只能通过将UserClaims“role”添加到ApiResource来将角色添加到

为什么要添加,或者将UserClaims“角色”添加到IdentityResource有什么好处

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"));
        }