在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 回答
不幸的是,这种映射最终会破坏定义为
name
和role
的特定声明名称,因为它们的名称会被转换,不再映射到您期望的内容 .这导致
[Authorize(Roles = "")]
和User.IsInRole("")
无法按预期工作 .Please refer也this