spring cloud oauth2 数据库存储数据
认证服务器端将客户端信息存储在mysql中、token数据存储在redis中
****************************
客户端信息数据脚本
create table oauth_client_details (
client_id VARCHAR(256) PRIMARY KEY,
resource_ids VARCHAR(256),
client_secret VARCHAR(256),
scope VARCHAR(256),
authorized_grant_types VARCHAR(256),
web_server_redirect_uri VARCHAR(256),
authorities VARCHAR(256),
access_token_validity INTEGER,
refresh_token_validity INTEGER,
additional_information VARCHAR(4096),
autoapprove VARCHAR(256)
);
****************************
认证服务器配置
RedisTokenStoreConfig:创建redisTokenStore实例
@Configuration
public class RedisTokenStoreConfig {
@Bean
public RedisTokenStore initRedisTokenStore(RedisConnectionFactory connectionFactory){
return new RedisTokenStore(connectionFactory);
}
}
Oauth2AuthorizationServerConfig
@Configuration
@EnableAuthorizationServer
public class OAuth2AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
@Resource
private UserService userService;
@Resource
private PasswordEncoder passwordEncoder;
@Resource
private DataSource dataSource;
@Resource
private RedisTokenStore redisTokenStore;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.userDetailsService(userService)
.tokenStore(redisTokenStore); //token数据存储在redis中
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.jdbc(dataSource).passwordEncoder(passwordEncoder);
//客户端数据存储在mysql中
}
@Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
security.allowFormAuthenticationForClients()
.tokenKeyAccess("isAuthenticated()")
.checkTokenAccess("isAuthenticated()");
}
}
****************************
使用测试
redis中存储数据