当前位置: 首页 > 知识库问答 >
问题:

在Keycloak SPI/Provider中获取当前用户的访问令牌(初始登录时)

傅志用
2023-03-14

当用户刚刚登录时,我如何在Keycloak服务提供程序接口中获得对当前通过身份验证的用户访问令牌的访问权限?

我假设没有办法在用户存储提供程序中获得当前用户的身份验证上下文,因为在那个时间点上用户还没有身份验证,对吗?password grant是当时获取用户身份验证上下文/令牌的正确方法吗?另一种选择可能是链接SPI,例如使用身份验证SPI并截取那里的令牌。但您似乎无法覆盖现有的身份验证流。最后也可能是最好的选择是创建事件侦听器提供程序。但我可以访问那里的访问令牌吗?

我真的很感谢一些投入,因为这整个努力感觉有点离谱。

共有1个答案

晏正豪
2023-03-14

另一个选择(对我来说更有意义)是使用客户机id作为服务进行身份验证(客户机身份验证),以便执行审计。这样,您甚至不需要在那一点上对用户进行身份验证。我认为这是一个更好的解决方案,因为除了我所说的之外,审计实际上是一个与系统相关的苦差事。如果让任何用户进行审计,他们可以编写一些带有有效令牌的代码,由他们自己执行大规模/假审计。

把它留给一个具体的客户,一个具体的角色,并为审计过程请求该角色,更有意义。

 类似资料:
  • 我正在构建一个jhipster应用程序。我正在尝试获取一个基于当前登录用户的对象列表。在线上有几个简单的例子,比如jhipster博客演示,描述了如何通过当前登录用户获取当前用户的博客--我想模仿一下。在演示中有一种回购方法: 我尝试用以下方法来模拟:

  • 问题内容: 我正在构建一个jhipster应用程序。我试图根据当前登录的用户获取对象列表。在线上有一些简单的示例,例如jhipster博客演示,描述了如何通过当前登录用户获取当前用户的博客,而我想对此进行模仿。在演示中,有一个repo方法: 我试图用以下方法来模仿: 但是我的IDE抛出此错误: 嵌套异常为java.lang.IllegalArgumentException:方法公共抽象java.u

  • sp_get_current_userid() 功能: 获取当前登录用户ID 参数: 无 返回: int,当前登录的用户id,如果未登录返回0

  • 接口说明 获取当前登录用户的ID 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /usercenter/api/userinfo/v1.0.0/getLoginUserId 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说明 参数

  • 接口说明 获取当前登录用户的ID 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /usercenter/api/userinfo/v1.0

  • 我跟随谷歌登录Android系统。现在我可以得到idToken,但我之前使用的后端服务器正期待访问令牌,因为我之前使用谷歌登录。现在我不想改变我的服务器端。但是我仍然如何使用谷歌登录并在我的Android应用程序中获得访问令牌,以便我可以验证我的用户到我的后端服务器。 我以前使用Google Play服务7.5.0,现在使用Google Play服务最新版本8.3.0。