Spring Security OAuth2

2019/5/9 posted in  SpringCloud

授权模式

从阮一峰的教程中,可以看到授权模式有四种:

  • 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配置