如何使用Spring Security使用基本身份验证标头访问开放资源

时间:2019-06-12 07:54:13

标签: spring security oauth basic-authentication

我有一个受基本身份验证保护的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
    }


}

0 个答案:

没有答案