问题描述
对于从前端服务到其他后端服务的其余调用,我正在使用“客户端凭据”授权类型。客户端凭据授权类型也在其他后端服务中使用。通过这样做,我无法知道谁是请求的实际调用者(当前登录的用户)。有没有办法将主体的身份验证和授权信息注入客户端凭据授予中颁发的令牌? (用户信息是指拥有客户端凭据的用户的 ID 或详细信息)。
我可以使用自定义令牌增强器向令牌添加一些自定义数据。但是我不知道如何在主体(SpringSecurityPrincipal springSecurityPrincipal = (SpringSecurityPrincipal)oAuth2Authentication.getPrincipal();
)中获取它,通常在密码流中我们可以通过使用自定义 AuthenticationProvider
实现来实现这一点,我可以使用任何类实现并使用添加自定义主体?
感谢您的帮助。
解决方法
您可以根据自己的要求创建自定义 UserDetailsService
和自定义 Principal
。您可以从这里选择一些想法:Authentication with a Database-backed UserDetailsService