Spring Security+;JWT:成功登录后如何丰富身份验证/主体?

Spring Security+;JWT:成功登录后如何丰富身份验证/主体?,spring,spring-security,Spring,Spring Security,我有一个问题似乎很受欢迎,但我找不到答案。有很多关于它的信息,但我不确定最好的方法是什么。下面是一个场景 我们有一个单页应用程序(SPA)和一个RESTfulWeb服务(API)。我们通过OAuth2/JWT使用外部身份验证/授权服务提供商。但是在成功登录之后,我需要在服务器端的数据库中保留用户ID(由外部身份验证提供者提供)。此外,我还需要在成功登录后在安全上下文中丰富身份验证/主体对象(例如,通过添加电子邮件) 网络上有很多关于这个场景的信息。但是我们已经有了用于身份验证/授权的SDK,它工

我有一个问题似乎很受欢迎,但我找不到答案。有很多关于它的信息,但我不确定最好的方法是什么。下面是一个场景

我们有一个单页应用程序(SPA)和一个RESTfulWeb服务(API)。我们通过OAuth2/JWT使用外部身份验证/授权服务提供商。但是在成功登录之后,我需要在服务器端的数据库中保留用户ID(由外部身份验证提供者提供)。此外,我还需要在成功登录后在安全上下文中丰富
身份验证
/
主体
对象(例如,通过添加电子邮件)


网络上有很多关于这个场景的信息。但是我们已经有了用于身份验证/授权的SDK,它工作得非常好(没有自定义代码等)。我只需要向身份验证对象添加一些内容。正确的方法是什么?谢谢。

为了记录在案,我们就是这么做的:
正如我所说的,已经有一个SDK来完成所有繁重的身份验证机制。认证成功后,我们只需要丰富认证对象。因此,我们将
AuthenticationProvider
(在SDK中实现)包装在我们的实现中(受
PreAuthenticatedAuthenticationProvider
启发),在成功验证后,我们使用我们的UserDetails实现(受
preauthenticatedGrandAuthoritiesUserDetailsService
启发)丰富了结果。其余的都是直截了当的


PS:如果你不喜欢这个主意,请告诉我

我也在寻找同样的答案,发现你的答案令人鼓舞。我对http.jee()配置采用了相同的方法。嘿,谢谢你的解释,你有没有可能把代码发布到别的地方?我一直在努力使用完全相同的用例