= spring-boot-demo-oauth-resource-server Doc Writer v1.0, 2019-01-09 :toc: spring boot oauth2 资源服务器,同 授权服务器 一起使用。 > 使用 `spring security oauth` - JWT 解密,远程公钥获取 - 基于角色访问控制 - 基于应用授权域访问控制 == jwt 解密 要先获取 jwt 公钥 [source,java] .OauthResourceTokenConfig ---- public class OauthResourceTokenConfig { // ...... private String getPubKey() { // 如果本地没有密钥,就从授权服务器中获取 return StringUtils.isEmpty(resourceServerProperties.getJwt().getKeyValue()) ? getKeyFromAuthorizationServer() : resourceServerProperties.getJwt().getKeyValue(); } // ...... } ---- 然后配置进去 [source, java] .OauthResourceServerConfig ---- public class OauthResourceServerConfig extends ResourceServerConfigurerAdapter { @Override public void configure(ResourceServerSecurityConfigurer resources) { resources .tokenStore(tokenStore) .resourceId(resourceServerProperties.getResourceId()); } } ---- == 访问控制 通过 `@EnableGlobalMethodSecurity(prePostEnabled = true)` 注解开启 `spring security` 的全局方法安全控制 - `@PreAuthorize("hasRole('ADMIN')")` 校验角色 - `@PreAuthorize("#oauth2.hasScope('READ')")` 校验令牌授权域 == 测试 测试用例: `com.xkcoding.oauth.controller.TestControllerTest` 先获取 `token`,携带 `token` 去访问资源即可。