spring security OAuth2.0是对OAuth2.0的一种实现,并且跟spring security相辅相成,与spring cloud体系的集成也非常便利,可以用它来实现分布式认证授权。
OAuth2.0的服务提供方包含两个服务:即授权服务 (Authorization Server,也叫认证服务) 和资源服务 (Resource Server)。使用 spring security OAuth2.0的时候可以选择把它们放在同一个应用程序中实现,也可以选择建立使用 同一个授权服务和 多个资源服务。
授权服务:
应包含 对接入端以及登入用户 的合法性进行验证并颁发token等功能,对令牌的请求端点由 Spring MVC 控制器进行实现。
下面是配置一个认证服务必须要实现的endpoints:
AuthorizationEndpoint 用于认证请求。默认 URL:/oauth/authorize 。
TokenEndpoint 用于访问令牌的请求。默认 URL: /oauth/token 。
资源服务:
应包含 对资源的保护功能,对非法请求进行拦截,对请求中token进行解析鉴权等。
下面的过滤器用于实现 OAuth 2.0 资源服务:
OAuth2AuthenticationProcessingFilter 用于对请求给出的身份令牌解析鉴权。
基于以上信息,初步给出实现流程:
创建uaa授权服务(也可叫认证服务)和order订单资源服务
认证流程如下:
1、客户端请求UAA授权服务进行认证。
2、认证通过后由UAA颁发令牌。
3、客户端携带令牌Token请求资源服务。
4、资源服务校验令牌的合法性,合法即返回资源信息。