【问题标题】:Keycloak include permission into the access token along with the rolesKeycloak 将权限与角色一起包含在访问令牌中
【发布时间】:2019-07-01 06:07:49
【问题描述】:

我一直致力于使用 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 的正确程序。

【问题讨论】:

    标签: permissions authorization token keycloak entitlements


    【解决方案1】:

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

    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 响应客户端

    【讨论】:

    • 我可以提取分配给用户的所有权限吗,因为这里我只获得与资源和用户相关的权限。我只希望在该人登录时这样做。根据权限,我应该能够填充我的 UI,我不想在资源方面有所考虑。
    • 你使用 /auth/realms/${realm}/authz/protection/uma-policy 按照文档github.com/keycloak/keycloak-documentation/blob/…
    猜你喜欢
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 2020-10-02
    • 2021-05-26
    • 2016-12-12
    • 2020-12-25
    • 2020-01-02
    • 2019-07-22
    相关资源
    最近更新 更多