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

时间:2016-09-29 13:41:06

标签: c# identityserver3

在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
        }
    };
}

我有一个阅读范围并在获取承载令牌时发送该范围,如果我使用没有指定角色的授权标签,一切正常。一旦我添加了角色授权就被拒绝。 如何修改客户端以添加&#34; Read&#34;角色吗

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

1 个答案:

答案 0 :(得分:0)

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

这会导致[Authorize(Roles = "")]User.IsInRole("")无法正常工作。

Please referthis