Я пытаюсь создать базовую c службу аутентификации, для некоторых бизнес-логи c мне нужно принять все учетные данные аутентификации basi c и заставить их обратиться к другой службе (и там произойдет сбой, если учетные данные неверны). Поэтому я пытаюсь сгенерировать исключение, если отсутствует базовый c auth или отсутствуют учетные данные.
Это мой SecurityConfigurer:
@Configuration
@EnableWebSecurity
public class SecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Autowired
STGAuthenticationProvider authProvider;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authProvider);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests().anyRequest().authenticated()
.and().httpBasic();
}
}
А это мой CustomAuthProvider :
@Component
public class STGAuthenticationProvider implements AuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
String username = authentication.getName();
String password = authentication.getCredentials().toString();
if(!StringUtils.isBlank(username) && !StringUtils.isBlank(password)) {
return new UsernamePasswordAuthenticationToken(username, password, new ArrayList<>());
} else {
throw new STGNoCredentialsException(Constants.Error.NO_CREDENTIALS);
}
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}
На самом деле мое приложение выдает мне «401 несанкционированный», если я отправляю запрос без авторизации (я бы очень хотел получить свое собственное исключение, которое вы можете увидеть на моем CustomAuthProvider). И когда я отправляю только 1 учетную запись (имя пользователя или пароль) или никого, моя служба отвечает мне пустым телом на POSTMAN. Ребята, вы можете мне помочь?