ResourceServer
资源服务器负责提供受保护资源,只是需要到授权服务器进行token验证。
所以,可以理解为我们的任意一个后台接口都是一个资源,资源服务器就对接口起到保护的作用。所以资源服务器一般集成到我们的微服务进程当中。maven可以是一个单独的模块,对其他的微服务模块进行保护。
- 要访问资源服务器受保护的资源需要携带令牌(从授权服务器获得)
- 客户端往往同时也是一个资源服务器,各个服务之间的通信(访问需要权限的资源)时需携带访问令牌
- 资源服务器通过 @EnableResourceServer 注解来开启一个 OAuth2AuthenticationProcessingFilter 类型的过滤器
- 通过继承 ResourceServerConfigurerAdapter 类来配置资源服务器
认证相关
首先,ResourceServerConfigurerAdapter会开启webSecurity,所以需要向spring-security一样,对http端点的保护进行配置
@Override
public void configure(HttpSecurity http) throws Exception
{
http.csrf().disable();
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = http
.authorizeRequests();
registry.anyRequest().authenticated();
}
oauth2相关
其次,对于oauth2的token认证,通过以下方式进行。
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
RemoteTokenServices tokenService = new RemoteTokenServices();
tokenService.setCheckTokenEndpointUrl(URL);
tokenService.setClientId("net5ijy");
tokenService.setClientSecret("12345678");
resources.tokenServices(tokenService);
}
这里没有过多的配置,只是到认证服务器验证token,其余都是默认配置。
总结
经过以上的配置,就保护了所有的url,都需要进行token的认证,认证方式是去AuthorizationServer验证token
网友评论