验证服务器在上一篇文章中.
验证服务器是做权限验证,有没有登录,有没有权限访问某些内容等。资源服务器指提供业务功能的服务器,他们会向验证服务器进行验证是否有权限访问,有则处理请求,无则直接返回401无授权。
这样就简单了,在上一篇文章的基础上,直接添加一个ResourceServerConfig的配置就行了
代码如下
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated()
.and()
.httpBasic();
}
}
这时,验证服务器内提供的接口,需要授权才能访问。
我们用api访问软件进行测试,截图分别如下:
单独构建的资源服务器会向授权服务器进行验证,验证的接口为/oauth/check_token。
@Override
public void configure(AuthorizationServerSecurityConfigurer security) {
security.allowFormAuthenticationForClients();
//允许访问/oauth/check_token
security.checkTokenAccess("permitAll()");
}
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-oauth2</artifactId>
</dependency>
@Configuration
@EnableResourceServer
public class OAuth2ResourceConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/noAuth/**").permitAll() //设置/oauth/**的接口不需要授权就可以访问
.anyRequest().authenticated();
}
}
security:
oauth2:
resource:
id: test
token-info-uri: http://127.0.0.1:8080/oauth/check_token
prefer-token-info: true
client:
access-token-uri: http://127.0.0.1:8080/oauth/token
user-authorization-uri: http://127.0.0.1:8080/oauth/authorize
client-id: test
client-secret: test
配置好以上三步,资源服务器的配置就算完成了,配合验证服务器,我们可以启动进行测试。
访问/noAuth 接口,是否有token都可以访问
访问/test 接口,必须有权限才可以
测试访问截图如下: