Spring Security - 用于oAuth2实现的UserDetailsS​​ervice?

时间:2017-05-26 16:41:29

标签: java spring-mvc spring-security oauth-2.0 jwt

因此,使用基本身份验证,我只需使用UserDetailsS​​ervice的实现即可看到该值,该实现基本上只是加载用户并确认它们已经过身份验证。

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

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

这是另一种方式?什么是可靠的实现?

感谢。

1 个答案:

答案 0 :(得分:1)

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