Keycloak用户角色angular和.net core

时间:2019-05-09 07:11:09

标签: angular asp.net-core-webapi keycloak

我有一个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 core 2.2

Angular 7

1 个答案:

答案 0 :(得分:0)

您需要确认设置正确无误。

在启动文件中:

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

在Controller文件中:

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

在密钥斗篷中,创建一个角色(客户/角色/添加角色): Create Role

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

在密钥斗篷中,为您的客户端创建一个服务帐户角色(“客户端/服务帐户角色”): Create membership between client and role

现在它应该可以工作了:)