首页 > 解决方案 > 从 Token 获取角色

问题描述

我正在尝试从 azure web 令牌验证角色类型。这是我的授权政策。

services.AddAuthentication(options => {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(o => {
                o.Authority = Configuration["Identity:Authority"];
                o.RequireHttpsMetadata = false;
            });


services.AddAuthorization(options => {
                options.AddPolicy("ApiAccess", policy => {
                    policy.RequireClaim(System.Security.Claims.ClaimTypes.Role, "apiAccess");
                });
});

我可以在令牌中看到我的角色类型的角色。但是,如果我尝试访问我的网络应用程序中的任何页面,则表明我不是正确的角色。

"roles": [
        "apiAccess"
    ],

标签: oauth-2.0jwtbearer-token

解决方案


你确定可以System.Security.Claims.ClaimTypes.Role解决roles吗?如果您roles直接使用字符串怎么办:

policy.RequireClaim("roles", "apiAccess");

还是使用该.RequireRole方法?

policy.RequireRole("apiAccess")

推荐阅读