gpt4 book ai didi

java - 使用 keycloak 实现授权,提取 RPT token 后如何将资源名称与 Controller 映射并取消用户授权

转载 作者:行者123 更新时间:2023-12-02 10:16:17 25 4
gpt4 key购买 nike

我正在开发一个 Play Framework Rest API,它使用 keycloak 进行身份验证,现在在扩展到授权方面,我已经提取了 RPT token 并根据资源名称存储了权限访问。但现在我不知道如何将我的 Controller 与资源名称映射并限制用户使用某些只能由管理员或不同角色使用的功能。权限的结构为:

"authorization": {
"permissions": [
{
"rsid": "4bxxxxxx-xxxxx-xxxxx-xxxx-xxxxxxx",
"rsname": "Default Resource"
},
{
"rsid": "8xxxxxx-xxxxx-xxxxx-xxxx-xxxxxxx",
"rsname": "admin_res"
},
{
"rsid": "cxxxxxx-xxxxx-xxxxx-xxxx-xxxxxxx",
"rsname": "superAdmin_res"
}
]
},

我将所有 rsname 存储在一个列表中,并存储在本地 session 中。

现在我只想根据资源名称控制 api 调用并限制 Controller 调用。

我有一个 KeyCloakSessionAction ,它扩展为一个 action.simple ,那么我如何传递身份验证详细信息并限制某些 Controller 。

最佳答案

不确定是否使用任何 keycloak 适配器,如果您正在为 playframework 实现一个适配器,则不需要存储权限,您可以直接从 token 端点获取总体决策,如下所示

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 A#Scope A"
--data "response_mode=decision"

响应将是

 {
'result': true
}

您可以通过 keycloak documentation 获取更多详细信息

关于java - 使用 keycloak 实现授权,提取 RPT token 后如何将资源名称与 Controller 映射并取消用户授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com