При использовании basi c auth, то, что вызывает диалог входа в систему браузера, - это наличие WWW-Authenticate
заголовка в ответе 401. Итак, ваша цель здесь - удалить это.
При настройке безопасности Spring по умолчанию причина отправки заголовков: BasicAuthenticationEntryPoint
.
Поскольку здесь также отображается realm для пользователя, вот хуки в базовом конфигураторе c auth для замены точки входа (где BasicAuthenticationEntryPoint
- значение по умолчанию, если не установлено).
Итак, вот пример с обычная пружинная защита для установки:
@Configuration
@EnableWebSecurity
class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests().anyRequest().authenticated()
.and()
.formLogin()
.disable()
.httpBasic()
.authenticationEntryPoint(new BasicAuthenticationEntryPointWithoutWWWAuthenticate())
}
}
// See org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint
class BasicAuthenticationEntryPointWithoutWWWAuthenticate implements AuthenticationEntryPoint {
void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException {
// XXX don't set the header, that triggers the browser to show the login form
// response.addHeader("WWW-Authenticate", "Basic realm=\"" + realmName + "\"");
response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase());
}
}