Spring Security + JWT:登录成功后如何丰富Authentication/Principal?

Rad*_*Rad 6 spring spring-security

我\xe2\x80\x99有一个似乎很受欢迎的问题,但我无法\xe2\x80\x99找到答案。好吧,有很多关于它的信息,但我不确定最好的方法是什么。所以这里\xe2\x80\x99是场景。

\n\n

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

\n\n

网上有很多关于这种情况的内容。但我们已经有用于身份验证/授权的 SDK,并且它运行得很好(没有自定义代码等)。我只需要向身份验证对象添加一些内容。正确的做法是什么?谢谢。

\n

Rad*_*Rad 5

作为记录,这就是我们所做的:
正如我所说,已经有一个 SDK 完成了身份验证机制的所有繁重工作。我们只需要在认证成功后丰富认证对象即可。AuthenticationProvider因此,我们将(在 SDK 中实现)包装在我们的实现中(受 启发PreAuthenticatedAuthenticationProvider),并且在成功身份验证后,我们使用 UserDetails 实现丰富了结果(受 启发PreAuthenticatedGrantedAuthoritiesUserDetailsService)。剩下的就很简单了。

PS:如果您不喜欢这个想法,请告诉我。

  • 嘿,谢谢您的解释,您有机会将代码发布到某个地方吗?我一直在努力解决完全相同的用例 (3认同)
  • 您好,谢谢您的信息。我正在努力解决同样的问题。你能分享一下代码吗?将会非常有帮助! (2认同)