关于OAuth的介绍查看我的另一篇文章OAuth的4种授权方式,spring-security-oauth2是实现OAuth2.0的框架,配置稍微有些繁琐,因此本文记录下大概的思路,加深印象。
OAuth 2.0中主要有Authorization Service授权服务和Resource Service资源服务,他们可以在同一个应用程序中,也可以在两个应用程序中,甚至多个资源服务共享一个授权服务。
spring-security提供了相应的endpoints来管理token的请求,/oauth/authorize
端点负责授权服务,/oauth/token
端点负责token的请求服务;资源服务中的过滤器OAuth2AuthenticationProcessingFilter 负责校验Token。
下面从总体上介绍授权服务和资源服务的主要配置,详细的配置在githubspring-security-oauth demo上。
授权服务配置
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
private static final String DEMO_RESOURCE_ID = "openapi";
@Autowired
private OrderAuthProperties orderAuthProperties;
/**
* 注意这里AuthenticationManager和UserAccountService
* 是在SecurityConfiguration配置的,把俩个配置类关联了起来
*/
@Autowired
AuthenticationManager authenticationManager;
@Autowired
private UserAccountService userAccountService;
@Autowired
private AuthorizationCodeServices authorizationCodeServices;
@Autowired
RedisConnectionFactory redisConnectionFactory;
@Autowired
private OAuthClientDetailsService oAuthClientDetailsService;
@Autowired
private Dat