簡體   English   中英

Keycloak用戶角色angular和.net核心

[英]Keycloak user roles angular and .net core

我有一個Keycloak問題。 我想將用戶角色添加到我的Angular(客戶端)/ .net核心(后端)應用程序。 我沒有經驗,所以我查看了本教程: https//medium.com/@xavier.hahn/adding-authorization-to-asp-net-core-app-using-keycloak-c6c96ee0e655

我的客戶端將令牌發送到后端。 在后端,我將[Authorize]屬性添加到我的Controller類。 如果我發送一個get到后端,授權過程工作正常,我得到數據。 但是,如果我將[Authorize(Roles =“Administrators”)]設置為控制器方法,我會收到403錯誤:

Response {_body: "", status: 403, ok: false, statusText: "Forbidden", headers: Headers, …}
headers: Headers {_headers: Map(5), _normalizedNames: Map(5)}
ok: false
status: 403
statusText: "Forbidden"
type: 2
url: "http://localhost:64336/api/SampleData/authorization"
_body: ""
__proto__: Body

在訪問令牌中設置了user_roles:

 "user_roles": [
        "uma_protection",
        "Administrators",
        "Users"
      ],

有沒有人知道什么是錯的,或者有人知道另一個教程?

非常感謝

Keycloack 4.8.3。

.net核心2.2

Angular 7

您需要驗證您的設置是否正確。

在啟動文件中:

 services.AddAuthorization(options =>
 {
      options.AddPolicy("MyPolice", policy => policy.RequireClaim("myMapper", "MyRole"));
 });

在Controller文件中:

[HttpGet]
[Authorize(Policy = "myPolicy")]
public ActionResult Protect()
{
    return Ok("myPolicy work");
}

在Keycloak中,創建角色(客戶端/角色/添加角色): 創建角色

在Keycloak中,創建一個映射器(Clients / Mapper / Create): Create Mapper

在keycloak中,為您的客戶端創建服務帳戶角色(客戶端/服務帳戶角色): 在客戶端和角色之間創建成員資格

現在它應該工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM