首页 文章

Authorize标记上的角色与IdentityServer3客户端设置之间的关系是什么

提问于
浏览
0

在Authorize标记中,如果指定了Role,则访问被拒绝,我无法弄清楚如何配置IdentityServer3以允许Role . 我正在使用客户端凭据流 . 这是标签:

[Authorize(Roles = "Read")]

我用来创建客户端的代码如下:

public IEnumerable<Client> GetClientsToAddUpdate()
{
    return new Client[]
    {
        new Client
        {
            ClientName = "Portal Client Name",
            Enabled = true,
            ClientId = "portalClientName",
            ClientSecrets = new List<Secret>
            {
                new Secret("AVerySecretSecret".Sha256())
            },
            Flow = Flows.ClientCredentials,
            AllowClientCredentialsOnly = true,
            AllowedScopes = new List<string>
            {
                "Read"
            },

            Claims = new List<Claim>
            {
                new Claim("client_type", "headless"),
                new Claim("client_owner", "Portal"),
                new Claim("add_detail", "allow")
            },
            PrefixClientClaims = false
        }
    };
}

我有一个阅读范围,并在获得承载令牌时发送该范围,如果我使用没有指定角色的授权标签,一切正常 . 一旦我添加了角色授权就被拒绝 . How do I modify the Client to add the "Read" Role?

一些背景是我想通过Swashbuckle使用Swagger为客户端提供一个沙盒来玩API,我无法获得授权,所以我想添加Role,因为这似乎让Swagger UI更接近工作 .

1 回答

  • 0

    不幸的是,这种映射最终会破坏定义为 namerole 的特定声明名称,因为它们的名称会被转换,不再映射到您期望的内容 .

    这导致 [Authorize(Roles = "")]User.IsInRole("") 无法按预期工作 .

    Please referthis

相关问题