2016-09-29 66 views
0

在授权标签中,如果指定角色,则访问被拒绝,我无法弄清楚如何配置IdentityServer3以允许角色。我正在使用客户端凭据流。这里是标签:授权标签上的角色和IdentityServer3客户端设置之间的关系

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

我已阅读的范围和取得的承载令牌时发送范围,如果我使用没有指定一切正常工作的授权标签。只要我添加一个角色授权被拒绝。 如何修改客户端以添加“读取”角色?

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

回答

0

不幸的是这种映射最终突破定义为namerole具体的要求名字,因为他们的名字得到转化,不再映射到您所期望的东西。

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

Please referthis