当用户刚刚登录时,如何在Keycloak服务提供商界面中访问当前经过身份验证的用户访问令牌?
现状: 当用户使用用户名和密码执行登录时,我正在使用自定义用户联合/存储提供程序中的 Apache HttpClient 进行手动密码授予。
然后,用户访问令牌用于通过其身份验证上下文调用内部 API。出于审核/GDPR 目的,需要使用用户持有者令牌进行此 API 调用,因为用户在登录时会给予多个同意。
我假设无法在用户存储提供程序中获取当前用户的身份验证上下文,因为用户在该时间点尚未进行身份验证,对吗? 密码授予是否是当时获取用户身份验证上下文/令牌的正确方法?另一种选择可能是链接 SPI,例如使用身份验证 SPI 并在那里拦截令牌。但似乎您无法覆盖现有的身份验证流。 最后一个(也许是最好的选择(是创建事件侦听器提供程序。但是我可以访问那里的访问令牌吗?
我真的很感激一些意见,因为整个努力感觉有点不对劲。
另一种选择(对我来说更有意义(是使用客户端 ID 作为服务进行身份验证(客户端身份验证(,以便执行审核。这样,您甚至不需要在此时对用户进行身份验证。我认为这是一个更好的解决方案,因为除了我所说的之外,审计实际上是一个与系统相关的苦差事。如果您让任何用户执行审核,他们可以使用有效令牌编写一些代码脚本,以自行执行大规模/虚假审核。
将其留给具有具体角色的具体客户并请求该角色用于审核过程更有意义。