在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更接近工作。
答案 0 :(得分:0)
不幸的是,这种映射最终会破坏定义为name
和role
的特定声明名称,因为它们的名称会被转换,不再映射到您期望的名称。
这会导致[Authorize(Roles = "")]
和User.IsInRole("")
无法正常工作。