因此,使用基本身份验证,我只需使用UserDetailsService的实现即可看到该值,该实现基本上只是加载用户并确认它们已经过身份验证。
但是,我现在想使用oAuth2,我不确定我的想法是否完全错误。不使用oAuth2消除了对UserDetailsService实现的需求吗?因为授权服务器本质上是检查以确保用户存在(使用资源所有者密码流)然后向用户发送JWT的人。
一旦用户拥有此访问令牌并且可以随每个请求发送它,就必须有另一种方法让用户通过身份验证而不是重复工作,并检查确保凭据在UserDetailsService(来自oAuth2的授权服务器已经有一个)。
这是另一种方式?什么是可靠的实现?
感谢。
答案 0 :(得分:1)
实际上,UserDetailsService
需要获取具有其权限的用户信息。这是正常行为。如果用户通过授权,他将获得访问令牌,Spring将其身份验证数据存储到SecurityContext
。当用户使用令牌向受保护资源发送请求时 - Spring会验证令牌并从DB或内存中放入SecurityContext身份验证数据。它取决于TokenStore
的类型(jdbc,内存等)。使用UserDetailsService
一次的Spring安全性,用于用户授权。