SUPPORT-9331: Fix

This commit is contained in:
Eduard Tihomirov 2025-08-19 11:18:48 +03:00
parent f00d5af8bc
commit 838e1f8358
3 changed files with 25 additions and 4 deletions

View file

@ -406,7 +406,10 @@ public class EsiaAuthService {
}
}
private void errorHandler(HttpResponse<?> httpResponse) {
private void errorHandler(HttpResponse<String> httpResponse) throws JsonProcessingException {
if (httpResponse.statusCode() == 500) {
processSignModuleError(httpResponse);
}
if (httpResponse.statusCode() != 200) {
throw new EsiaException(httpResponse.statusCode() + " " + httpResponse.body());
}
@ -557,7 +560,7 @@ public class EsiaAuthService {
SecurityContextHolder.setContext(context);
}
private String verifyToken(String accessToken) {
private String verifyToken(String accessToken) throws JsonProcessingException {
EsiaAccessToken esiaAccessToken = ulDataService.readToken(accessToken);
EsiaHeader esiaHeader = ulDataService.readHeader(accessToken);
if (!esiaHeader.getSbt().equals("access")) {
@ -590,6 +593,9 @@ public class EsiaAuthService {
}
HttpResponse<String> response = signVerify(accessToken);
if (response.statusCode() != 200) {
if (response.statusCode() == 500) {
processSignModuleError(response);
}
if (response.statusCode() == 401) {
return "Token invalid. " + response.body();
}
@ -636,4 +642,17 @@ public class EsiaAuthService {
securityHelper.clearAccessCookie(response, PRNS_UUID);
}
}
private void processSignModuleError(HttpResponse<String> response)
throws JsonProcessingException {
String errorCode = objectMapper.readTree(response.body())
.get("error_code")
.asText();
if (errorCode.equals("CERT_TRUST_REVOCATION_STATUS_UNKNOWN")) {
throw new LocalizedException("crl_certificate_expired", MESSAGE_SOURCE);
}
else {
throw new EsiaException("Unknown error in verify module. Error code " + errorCode);
}
}
}

View file

@ -1,3 +1,4 @@
kafka_reply_timeout=Превышено время ожидания ответа от сервера.
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
crl_certificate_expired=Превышено время ожидания ответа из ЕСИА

View file

@ -1,3 +1,4 @@
kafka_reply_timeout=Превышено время ожидания ответа от сервера.
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
crl_certificate_expired=Превышено время ожидания ответа из ЕСИА