我有一个受基本身份验证保护的API应用程序。此api还提供了可自由访问的oauth端点。在某些使用情况下,还应该使用带有基本身份验证的Authorization标头访问此oauth端点。 oauth端点的基本身份验证在控制器内部处理。对于API的其余部分,使用常规的spring安全性基本认证。
当我不经过身份验证访问/ oauth时。一切都好。但是,如果我将带有请求的基本身份验证标头发送到/ oauth,则正常的spring security基本身份验证会启动。如何仅对/ oauth避免这种情况,但其余API应该正常处理。
我们将应用程序从旧版spring 3.x迁移到了spring boot 2.0.8。在旧版本的xml配置中,当调用/ oauth
时,它可以正常工作并且基本身份验证没有生效
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// @formatter:off
http
.sessionManagement()
.sessionCreationPolicy(STATELESS)
.and()
.authorizeRequests()
.antMatchers("/oauth/**")
.permitAll()
.antMatchers("/**")
.authenticated()
.and()
.httpBasic()
.authenticationEntryPoint(new RestAuthenticationEntryPoint())
.and()
.csrf()
.disable();
// @formatter:on
}
}