2016-07-23 71 views
3

我使用ASP.NET核心與OpenIddict,JWT,資源所有者授予和基於聲明的角色。不執行任何政策的授權按預期工作。基於聲明的OpenId連接身份驗證

我想對某些控制器和操作方法實施授權策略。我的所有用戶都擁有角色要求,所以我沒有在啓動以下:

services.AddAuthorization(options => 
{ 
    options.AddPolicy("Admin", p => p.RequireClaim("Admin"); 
}); 

而且我也對操作方法如下:

[Authorize("Admin")] 
public async Task<string> Index() 
{ 
    return "Yes"; 
} 

沒有「管理」,我是能夠訪問資源,添加「管理員」後,我不能。

我假設因爲我生成的JWT令牌沒有用戶聲明。

  • 我的智威湯遜是否應該包含令牌的用戶角色聲明?
  • 如何使用OpenIddict發送角色聲明?

回答

3

您需要請求roles作用域以在訪問令牌中複製(它可能會在將來更改)。

POST /connect/token HTTP/1.1 
Host: server.example.com 
Content-Type: application/x-www-form-urlencoded 

grant_type=password&username=johndoe&password=A3ddj3w&scope=roles 
+0

我這樣做,它將角色返回給令牌。但後來我不得不修改我的政策,要求角色而不是索賠,這不是我的意圖,但它現在起作用了,謝謝。 – Adam

相關問題