授权模式
从阮一峰的教程中,可以看到授权模式有四种:
- authorization_code (授权码)
- implicit (隐式许可)
- password (用户名和密码)
- client_credentials (客户端凭证)
OAuth2服务提供方的实现
OAuth2中,有 Authorization Server和Resource Server。通常情况下,我们可以把这两个Server包含在一个应用中。
spring security中, org.springframework.security.oauth2.provider包下都是OAuth2服务提供方的实现所需要的类。
两个核心类,AuthorizationEndpoint的用途是请求者用来获取授权,TokenEndpoint的用途是请求者用来获取Token的。
服务配置过程
EnableAuthorizationServer
EnableAuthorizationServer注解用来配置Authorization Server。
这个注解引入两个配置类AuthorizationServerEndpointsConfiguration和AuthorizationServerSecurityConfiguration。
AuthorizationServerEndpointsConfiguration中初始化了各种endpoint:
其中包括AuthorizationEndpoint,TokenEndpoint,CheckTokenEndpoint,WhitelabelApprovalEndpoint,WhitelabelErrorEndpoint。
从各种endpoint来看,spring security帮我们定义好了如下几个uri对应的服务。
/oauth/authorize:授权
/oauth/token:令牌
/oauth/confirm_access:用户确认授权提交
/oauth/error:授权服务错误信息
/oauth/check_token:用于资源服务访问的令牌解析
/oauth/token_key:提供公有密匙的端点,如果你使用JWT令牌的话
AuthorizationServerSecurityConfiguration引入了配置类ClientDetailsServiceConfiguration和AuthorizationServerEndpointsConfiguration。并且
ClientDetailsServiceConfiguration
EnableResourceServer
EnableResourceServer引入了ResourceServerConfiguration配置