一 引言
本文主要好介绍了SpringCloud+Security+Oauth2 的初步集成,项目源码地址oauth2.0集成案例,以下案例主要是核心源码的解释,案例源码请查看案例源码
二 项目结构说明
oauth-server
oauth认证中心
oauth-client
oauth客户端
oauth-nacos
注册中心和配置中心
oauth-common
公用组件
三 认证中心的搭建
Oauth2提供了AuthorizationServerConfigurerAdapter
适配器类来作为认证授权服务的配置,其中有三个方法源码如下:
public class AuthorizationServerConfigurerAdapter {
//客户端详情:配置客户端请求的参数
public void configure(ClientDetailsServiceConfigurer clients)...
//授权服务断点:配置授权码和令牌的管理/存储方式
public void configure(AuthorizationServerEndpointsConfigurer endpoints)...
//授权服务安全配置:配置哪些路径放行(检查token的路径要放行)
public void configure(AuthorizationServerSecurityConfigurer security) ...
}
配置详解:
ClientDetailsServiceConfigurer
:用来配置客户端详情服务
:如配置客户端id(client_id)资源id、客户端密钥(secrect)、授权方式、scope等,可以基于内存或jdbc。(可以理解为是对浏览器向授权服务器获取授权码或令牌时需要提交的参数配置
),如果你做过三方登录应该就能理解这些参数,其实就是对客户端的参数配置
,在客户端获取授权码或者获取Token的URL请求中就需要带上这些客户端参数AuthorizationServerEndpointsConfigurer
:配置令牌的访问端点url和令牌服务
,如配置如何管理授权码(内存或jdbc),如何管理令牌(存储方式,有效时间等等)AuthorizationServerSecurityConfigurer
: 用来配置令牌端点的安全约束
,如配置对获取授权码,检查token等某些路径进行放行
3.1 认证中心搭建
@Configuration
@EnableAuthorizationServer // 开启认证服务
public class AuthServerConfig extends AuthorizationServerConfigurerAdapter {
// 数据源
@Autowired
private DataSource dataSource;
@Autowired
private TokenStore tokenStore;
@Autowired
private AuthenticationManager authenticationManager;
// 客户端配置
@Bean
public ClientDetailsService customClientDetailsService(){
return new JdbcClientDetailsService(dataSource);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
/**