角色 - Identity Server 4

Roles - Identity Server 4

我用 Asp.Net Core 2.0 API、Identity Server 和 WPF 应用程序完成了一个项目。 登录后,我可以从 WPF 访问 API。

现在我正在尝试实现角色,这样我就可以只授权某些用户访问 API。

在 Config.cs 中,我正在声明我的客户并添加到范围中:

  new Client
            {
             AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    IdentityServerConstants.StandardScopes.Email,
                    IdentityServerConstants.StandardScopes.OfflineAccess,
                    "fiver_auth_api",
                    "role"
                },
            AlwaysIncludeUserClaimsInIdToken=true
           }

正在声明测试用户:

  return new List<TestUser>
        {
            new TestUser
            {
                SubjectId = "", Username = "", Password = "",
                Claims = new List<Claim>
                {
                    new Claim(JwtClaimTypes.Email, "AliceSmith@email.com"),
                    new Claim(JwtClaimTypes.EmailVerified, "true", ClaimValueTypes.Boolean),
                    new Claim(JwtClaimTypes.Role, "Admin"),
                    new Claim(JwtClaimTypes.Scope, "openid offline_access fiver_auth_api")
                }
            }
       }   

在我使用的控制器中:

[Authorize(Roles = "Admin")]

为什么我没有在令牌中得到用户声明?

对于感兴趣的人,我是如何修复它的: 在您的配置文件中为您的角色添加一个列表:

new ApiResource
 (
   "fiver_auth_api", 
   "Fiver.Security.AuthServer.Api", 
    new List<string> {"role"} <--- Add this line to your API
  )