Keycloak 包括对访问令牌的权限以及角色

Keycloak include permission into the access token along with the roles

我一直致力于使用 keycloak 设置授权,并根据资源设置了特定的角色和权限,但 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 Not Found..

谁能告诉我在访问令牌中包含权限或正确生成 RPT 的正确过程。

Keycloak 为授权服务提供了一个发现文档。可以从以下url.

获取
curl -X GET http://localhost:8080/auth/realms/{realm}/.well-known/uma2-configuration -H "Authorization: Bearer ${access_token}"

这里 localhost 和 8080 是 keycloak 主机和端口

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

我可以使用下面的命令

获得RPT
curl -X POST   http://localhost:8080/auth/realms/${realm}/protocol/openid-connect/token  -H "Authorization: Bearer ${access_token}" --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" --data "audience={resource_server_client_id}"  --data "permission=Resource#Scope"

Keycloak 使用 RPT 响应客户端