Spring security 多个独立的HttpSecurity实例

Spring security 多个独立的HttpSecurity实例,spring-security,Spring Security,我试图在Spring Security中设置两个独立的身份验证方案:所有匹配的/api/**都应该通过HTTP basic auth进行保护,而所有其他请求都应该通过表单登录进行保护 我开始使用以下示例: @EnableWebSecurity 公共类MultiHttpSecurityConfig{ @豆子 公共UserDetailsService UserDetailsService()引发异常{ //确保密码编码正确 UserBuilder users=User.withDefaultPass

我试图在Spring Security中设置两个独立的身份验证方案:所有匹配的
/api/**
都应该通过HTTP basic auth进行保护,而所有其他请求都应该通过表单登录进行保护

我开始使用以下示例:

@EnableWebSecurity
公共类MultiHttpSecurityConfig{
@豆子
公共UserDetailsService UserDetailsService()引发异常{
//确保密码编码正确
UserBuilder users=User.withDefaultPasswordEncoder();
InMemoryUserDetailsManager=新建InMemoryUserDetailsManager();
manager.createUser(users.username(“user”).password(“password”).roles(“user”).build());
manager.createUser(users.username(“admin”).password(“password”).roles(“USER”、“admin”).build());
退货经理;
}
@配置
@订单(1)
公共静态类ApiWebSecurity配置适配器扩展了WebSecurity配置适配器{
受保护的无效配置(HttpSecurity http)引发异常{
http
.antMatcher(“/api/**”)
.授权请求()
.anyRequest().hasRole(“管理员”)
.及()
.httpBasic();
}
}
@配置
公共静态类FormLoginWebSecurityConfigureAdapter扩展了WebSecurityConfigureAdapter{
@凌驾
受保护的无效配置(HttpSecurity http)引发异常{
http
.授权请求()
.anyRequest().authenticated()
.及()
.formLogin();
}
}
}
一般来说,此设置正常工作,但是当通过HTTP basic auth发送错误凭据时,我会被重定向到表单登录页面:

$ curl -i localhost:8080/api/basic -u admin:badpass
HTTP/1.1 302 
WWW-Authenticate: Basic realm="Realm"
Location: http://localhost:8080/login

我如何告诉Spring Security在这里使用HTTP 401响应,而不是使用下一个身份验证方案?

Remove.and().formLogin();从配置方法。“所有其他请求应通过表单登录进行保护”