Сопоставьте недоступный сервер авторизации с номером 503.JAVA

Программисты JAVA общаются здесь
Anonymous
Сопоставьте недоступный сервер авторизации с номером 503.

Сообщение Anonymous »

Так я должен сопоставить «сервер авторизации не работает» с кодом 503?

Код: Выделить всё

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.oauth2ResourceServer(oauth2 -> oauth2
.authenticationEntryPoint(authenticationEntryPoint())
// ...
);
return http.build();
}

@Bean
public AuthenticationEntryPoint authenticationEntryPoint() {
return (request, response, authException) -> {
if (authException instanceof AuthenticationServiceException) {
response.sendError(
HttpStatus.SERVICE_UNAVAILABLE.value(),
authException.getMessage()
);
} else {
// Preserve default 401 behaviour for other auth failures
// (invalid token, expired, etc.)
response.sendError(
HttpStatus.UNAUTHORIZED.value(),
authException.getMessage()
);
}
};
}

Код: Выделить всё

org.springframework.security.authentication.AuthenticationServiceException: An error occurred while attempting to decode the Jwt: I/O error on GET request for "http://localhost:8100/oauth2/jwks": Connection refused: getsockopt
Это предложение Клода. Видите ли, @ControllerAdvice не будет работать (на самом деле это не так), поскольку

Исключение никогда не достигает DispatcherServlet. Декодирование JWT происходит внутри BearerTokenAuthenticationFilter, который является частью цепочки фильтров безопасности — оно запускается до того, как запрос попадает в Spring MVC.
– Клод Соннет

Или есть лучший способ?
Мне не на 100% удобно распространять логику обработки исключений повсюду. Эти детали, независимо от того, достиг ли сервлет Dispatcher или нет, не кажутся веской причиной для этого.
Spring Boot 4.

Вернуться в «JAVA»