1 OAuth2.0的使用场景
假设,A网站是一个打印照片的网站,B网站是一个存储照片的网站,二者原本毫无关联。如果一个用户想使用A网站打印自己存储在B网站的照片,那么A网站就需要使用B网站的照片资源才行。
B:A凭什么访问我的资源,我的资源只能被授权过的人访问
A: A告诉用户,你和B关系那么好,你去跟B要个令牌(token)给我啊,我带着token去访问B的资源。
B包括两个部分:(1)资源服务(2)认证服务
1 B系统
1.1 资源服务
(1)资源标记好
(2)不同访问方式操作资源的权限不同
(3)允许跨域访问
(4)顺带访问的token保存起来
@Configuration
@EnableResourceServer
public class OauthSourceConfig extends ResourceServerConfigurerAdapter {
@Autowired
private DataSource dataSource;
/**
* 指定token的持久化策略
* InMemoryTokenStore表示将token存储在内存
* Redis表示将token存储在redis中
* JdbcTokenStore存储在数据库中
* @return
*/
@Bean
public TokenStore jdbcTokenStore(){
return new JdbcTokenStore(dataSource);
}
/**
* 指定当前资源的id和存储方案
* @param resources
* @throws Exception
*/
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {