Spring 安全性 - 用户详细信息 oAuth2 实现服务?



因此,使用基本身份验证,我可以看到简单地使用UserDetailsService实现的价值,该实现基本上只是加载用户并确认他们已经过身份验证。

但是,我现在想使用 oAuth2,并且不确定我在这个问题上的想法是否完全错误。使用 oAuth2 不会消除对 UserDetailsService 实现的需求吗?因为从本质上讲,授权服务器是检查以确保用户存在(使用资源所有者密码流),然后向用户发送 JWT 的服务器。

一旦用户拥有此访问令牌并且可以随每个请求一起发送它,就必须有另一种方法让用户在 AuthenticationManager 中进行身份验证,而不是重复工作并检查以确保凭据在 UserDetailsService 中再次正确(来自 oAuth2 的授权服务器已经有一个)。

这是什么其他方式?对此的可靠实施是什么?

谢谢。

实际上UserDetailsService以他的权限获取用户信息所必需的。这是正常行为。如果用户通过授权,他会收到访问令牌,Spring 将他的身份验证数据存储到SecurityContext中。当用户使用令牌向受保护的资源发送请求时 - Spring 验证令牌并将来自数据库或内存的 SecurityContext 身份验证数据放入 SecurityContext 中。这取决于TokenStore的类型(jdbc,内存等)。Spring 安全性使用UserDetailsService一次进行用户授权。

最新更新