Keycloak 用户角色 Angular 和 .net 核心
Posted
技术标签:
【中文标题】Keycloak 用户角色 Angular 和 .net 核心【英文标题】:Keycloak user roles angular and .net core 【发布时间】:2019-09-26 23:16:07 【问题描述】:我有一个 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"
],
有人知道出了什么问题,或者有人知道另一个教程吗?
非常感谢
密钥锁 4.8.3.
.net 核心 2.2
角度 7
【问题讨论】:
如果用户角色嵌套在 realm_access 下,请看这里:***.com/questions/53702555/… 【参考方案1】:您需要验证您的设置是否正确。
在启动文件中:
services.AddAuthorization(options =>
options.AddPolicy("MyPolice", policy => policy.RequireClaim("myMapper", "MyRole"));
);
在控制器文件中:
[HttpGet]
[Authorize(Policy = "myPolicy")]
public ActionResult Protect()
return Ok("myPolicy work");
在 Keycloak 中,创建一个角色(Clients/Roles/Add Role): Create Role
在 Keycloak 中,创建一个映射器(Clients/Mapper/Create): Create Mapper
在 keycloak 中,为您的客户创建一个服务帐户角色(客户/服务帐户角色): Create membership between client and role
现在应该可以了:)
【讨论】:
以上是关于Keycloak 用户角色 Angular 和 .net 核心的主要内容,如果未能解决你的问题,请参考以下文章