SUPPORT-9331: Fix
This commit is contained in:
parent
b477348fac
commit
5234e66cb8
3 changed files with 26 additions and 6 deletions
|
|
@ -58,6 +58,7 @@ import ru.micord.ervu.security.webbpm.jwt.helper.SecurityHelper;
|
||||||
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
|
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
|
||||||
import ru.micord.ervu.security.webbpm.jwt.model.Token;
|
import ru.micord.ervu.security.webbpm.jwt.model.Token;
|
||||||
|
|
||||||
|
import ru.cg.webbpm.modules.core.runtime.api.LocalizedException;
|
||||||
import ru.cg.webbpm.modules.core.runtime.api.MessageBundleUtils;
|
import ru.cg.webbpm.modules.core.runtime.api.MessageBundleUtils;
|
||||||
|
|
||||||
import static ru.micord.ervu.security.SecurityConstants.PRNS_UUID;
|
import static ru.micord.ervu.security.SecurityConstants.PRNS_UUID;
|
||||||
|
|
@ -399,7 +400,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) {
|
if (httpResponse.statusCode() != 200) {
|
||||||
throw new EsiaException(httpResponse.statusCode() + " " + httpResponse.body());
|
throw new EsiaException(httpResponse.statusCode() + " " + httpResponse.body());
|
||||||
}
|
}
|
||||||
|
|
@ -482,7 +486,7 @@ public class EsiaAuthService {
|
||||||
SecurityContextHolder.setContext(context);
|
SecurityContextHolder.setContext(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String verifyToken(String accessToken) {
|
private String verifyToken(String accessToken) throws JsonProcessingException {
|
||||||
EsiaAccessToken esiaAccessToken = personalDataService.readToken(accessToken);
|
EsiaAccessToken esiaAccessToken = personalDataService.readToken(accessToken);
|
||||||
EsiaHeader esiaHeader = personalDataService.readHeader(accessToken);
|
EsiaHeader esiaHeader = personalDataService.readHeader(accessToken);
|
||||||
if (!esiaHeader.getSbt().equals("access")) {
|
if (!esiaHeader.getSbt().equals("access")) {
|
||||||
|
|
@ -515,6 +519,9 @@ public class EsiaAuthService {
|
||||||
}
|
}
|
||||||
HttpResponse<String> response = signVerify(accessToken);
|
HttpResponse<String> response = signVerify(accessToken);
|
||||||
if (response.statusCode() != 200) {
|
if (response.statusCode() != 200) {
|
||||||
|
if (response.statusCode() == 500) {
|
||||||
|
processSignModuleError(response);
|
||||||
|
}
|
||||||
if (response.statusCode() == 401) {
|
if (response.statusCode() == 401) {
|
||||||
return "Token invalid. " + response.body();
|
return "Token invalid. " + response.body();
|
||||||
}
|
}
|
||||||
|
|
@ -561,4 +568,17 @@ public class EsiaAuthService {
|
||||||
securityHelper.clearAccessCookie(response, PRNS_UUID);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
kafka_reply_timeout=Превышено время ожидания ответа от сервера.
|
kafka_reply_timeout=Превышено время ожидания ответа от сервера.
|
||||||
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА
|
|
||||||
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
|
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
|
||||||
|
crl_certificate_expired=Превышено время ожидания ответа из ЕСИА
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
kafka_reply_timeout=Превышено время ожидания ответа от сервера.
|
kafka_reply_timeout=Превышено время ожидания ответа от сервера.
|
||||||
access_denied=Доступ запрещен. Пользователь должен быть включен в группу "Сотрудник, ответственный за военно-учетную работу" в ЕСИА
|
|
||||||
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
|
login_attempts_exceeded=Слишком большое количество попыток авторизоваться в ЕСИА за короткий промежуток времени. Рекомендуем почистить cookie и cash браузера, после повторить авторизацию.
|
||||||
|
crl_certificate_expired=Превышено время ожидания ответа из ЕСИА
|
||||||
Loading…
Add table
Add a link
Reference in a new issue