使用 Keycloak 中的自定义 Admin REST API 获取用户的 ID 令牌
Posted
技术标签:
【中文标题】使用 Keycloak 中的自定义 Admin REST API 获取用户的 ID 令牌【英文标题】:Get ID token of a user using custom Admin REST API in Keycloak 【发布时间】:2021-01-20 07:50:43 【问题描述】:在我现在正在开发的系统中,我想使用 Keycloak 的 admin REST API 在我的 Keycloak 服务器中获取用户的 ID 令牌,而不知道用户的密码(即,仅使用管理员的密码)用户)。
也就是说,我想要一个管理 API
GET /realm/users/id/id-token
.
有可能实现这一点吗?
(Keycloak 的文档说可以实现自定义 API 端点 (https://www.keycloak.org/docs/latest/server_development/index.html#_extensions_rest), 但我不确定是否可以添加我想要的功能。)
【问题讨论】:
可能不适合您的用例,但您可能需要检查服务帐户(客户端凭据流)功能。您可以为服务帐户赋予角色(您需要为客户启用它,并且它必须是机密类型)。然后在您的后端,您可以使用客户端 ID 和客户端密码检索服务帐户的凭据,而不是模拟用户,然后使用这些凭据(令牌),您可以执行所需的调用。这样,进行数据操作的是服务,而不是模拟用户。 【参考方案1】:这听起来像是一个非常危险的功能(IDP 管理员可以伪装成他的 IDP 用户池中的任何用户)。但是您仍然缺少一个输入-客户端。每个客户端可能会生成不同的令牌。
我会说你可能需要:
1.) 访问令牌功能示例(不是 ID 令牌!)
检查GET /realm/clients/id/evaluate-scopes/generate-example-access-token
端点
https://www.keycloak.org/docs-api/11.0/rest-api/index.html
2.) 模拟功能
https://www.keycloak.org/docs/latest/server_admin/#impersonation
3.) 您可以在 Keycloak 中自行实现它,因此它完全符合您的需求。
【讨论】:
以上是关于使用 Keycloak 中的自定义 Admin REST API 获取用户的 ID 令牌的主要内容,如果未能解决你的问题,请参考以下文章
KeyCloak 中的自定义提供程序,可以根据用户名和密码进行身份验证
如何避免KeyCloak的登录页面,部署我们项目的自定义登录页面?
哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?