【发布时间】:2017-12-28 23:39:40
【问题描述】:
我有一个可以与 OAuth2(作为资源服务器)一起正常工作的 Spring Boot 应用程序。没有自定义 configure(HttpSecurity http) 方法。只有
spring-boot-starter-security
spring-security-oauth2
spring-security-jwt
被添加到 pom 中。
我需要添加应该不受保护的端点。所以我添加了自定义配置:
@Configuration
public class Security extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers(GET, "/public/**").anonymous()
.anyRequest().authenticated()
}
}
现在/public/** 端点可以正确地向所有人开放。但是所有其他端点都停止了工作,并且在我看到的调试级别:
p.a.OAuth2AuthenticationProcessingFilter : 身份验证请求失败:error="access_denied", error_description="Invalid token does not contain resource id (oauth2-resource)"
所以我想我以某种方式错误地覆盖了默认的 OAuth2 配置。怎么带回来?
【问题讨论】:
-
这是唯一涉及安全的配置。
@EnableResourceServer在主课上。并且在我添加Security类之前一切正常 -
我有 cloudfoundry-uaa 作为授权服务器。问题发生在仅作为资源服务器的服务器上
-
您可以从删除安全类开始,看看端点是否再次开始工作:)
-
@LukeBajada 是的,没有安全类,所有端点都在工作。但都受到保护,我需要 /public/** 可以匿名访问
标签: java spring spring-boot spring-security spring-security-oauth2