Spring Security中PreAuthenticatedAuthenticationToken的目的?

ami*_*ion 12 java spring-security jwt spring-boot

我正在使用SpringBoot中的UsernamePasswordAuthenticationToken对用户进行身份验证.

我正在为该用户使用JJWT生成令牌并将其返回.

现在,用户使用该令牌向我发送任何进一步的请求.在解密令牌后,我应该使用PreAuthenticatedAuthenticationToken并将其设置为SecurityContextHolder.getContext().setAuthentication()

目的是PreAuthenticatedAuthenticationToken什么?

sha*_*zin 16

目的PreAuthenticatedAuthenticationToken是通过Spring Security将第三方身份管理系统集成到Spring应用程序中.

A PreAuthenticatedAuthenticationToken可以以HTTP标头,HTTP参数等形式出现.在这种情况下,您的应用程序中不需要进行整个用户注册.只需存储此令牌和相关数据就足够了.

您可以从Spring Security文档中了解更多信息

对于JWT Case虽然解密后你甚至可以使用UsernamePasswordAuthenticationToken解密过程来显示用户名,密码,权限.

  • 谢谢!我的令牌不包含用户密码。仅用户名和权限。成功的解密本身将确保用户得到更早的身份验证,并且令牌由服务器生成。听起来对吗? (2认同)
  • @amitection 你的推理是正确的。无需访问数据库,因为令牌保存了真相。由于它已经过加密签名,因此应用程序可以信任它,而无需检查持久存储。(顺便说一下)这是使用 JWT 的优点之一。 (2认同)