Oauth 在KeyClope SPI/提供程序中获取当前用户访问令牌(初始登录时)

Oauth 在KeyClope SPI/提供程序中获取当前用户访问令牌(初始登录时),oauth,openid,keycloak,spi,openid-connect,Oauth,Openid,Keycloak,Spi,Openid Connect,当用户刚刚登录时,如何在KeyClope服务提供商界面中访问当前已验证的用户访问令牌 当前情况: 当用户使用用户名和密码进行登录时,我正在自定义用户联合/存储提供程序中使用Apache HttpClient进行手动密码授予 然后,用户访问令牌用于使用其身份验证上下文调用内部API。出于审核/GDPR目的,需要使用用户承载令牌进行此API调用,因为用户在登录时会给出多个同意 我假设没有办法在用户存储提供程序中获取当前用户的身份验证上下文,因为用户当时还没有经过身份验证,对吗? password g

当用户刚刚登录时,如何在KeyClope服务提供商界面中访问当前已验证的用户访问令牌

当前情况: 当用户使用用户名和密码进行登录时,我正在自定义用户联合/存储提供程序中使用Apache HttpClient进行手动密码授予

然后,用户访问令牌用于使用其身份验证上下文调用内部API。出于审核/GDPR目的,需要使用用户承载令牌进行此API调用,因为用户在登录时会给出多个同意

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

我真的很感激你能提供一些意见,因为这整个过程感觉有点不顺利

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

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