Keycloak将访问权限与角色一起包括在访问令牌中

时间:2019-02-07 07:09:20

标签: permissions authorization token keycloak entitlements

我一直在使用密钥斗篷来设置授权,并且已经根据资源设置了特定的角色和权限,但是JWT访问令牌仅包含有关角色的详细信息,而不包含分配给用户的权限。

我希望访问令牌包含权限详细信息,并尝试了Keycloak文档中的方法: 1)使用许可票证无法使用

生成票证
http://${host}:${port}/auth/realms/${realm_name}/authz/protection/permission

它显示:

{
    "error": "invalid_bearer_token",
    "error_description": "Could not obtain bearer access_token from request."
}

,因此无法生成RPT并获取权限的详细信息。

也尝试使用授权API。

2)使用授权API:

 curl -X GET \
     -H "Authorization: Bearer ${access_token}" \
     "http://localhost:8080/auth/realms/hello-world-authz/authz/entitlement/${resource_server_id}"

我尝试使用邮递员,但显示404未找到。

任何人都可以向我展示将访问权限包含在访问令牌中的正确过程或正确生成RPT。

1 个答案:

答案 0 :(得分:0)

Keycloak为授权服务提供了一个发现文档。您可以从以下网址获取。

from rest_framework_jwt.views import obtain_jwt_token
from rest_framework_jwt.views import refresh_jwt_token

 urlpatterns = [
    path('auth/obtain_token/', obtain_jwt_token),
    path('auth/refresh_token/', refresh_jwt_token),

此处localhost和8080用于密钥斗篷主机和端口

错误说您正在使用的令牌对客户端无效。

我能够使用以下命令获取curl -X GET http://localhost:8080/auth/realms/{realm}/.well-known/uma2-configuration -H "Authorization: Bearer ${access_token}"

RPT

Keycloak通过RPT响应客户端