2016-09-29 108 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