Merge remote-tracking branch 'origin/master' into develop

# Conflicts:
#	backend/pom.xml
#	backend/src/main/java/ru/micord/ervu/security/esia/service/EsiaAuthService.java
#	distribution/pom.xml
#	frontend/pom.xml
#	pom.xml
#	resources/pom.xml
This commit is contained in:
Eduard Tihomirov 2025-02-03 14:05:34 +03:00
commit 39a1f753e3
36 changed files with 1062 additions and 163 deletions

View file

@ -162,6 +162,7 @@ public class EsiaAuthService {
String esiaAccessTokenStr = null;
String prnOid = null;
Long expiresIn = null;
long signSecret = 0, requestAccessToken = 0, verifySecret = 0;
try {
String clientId = esiaConfig.getClientId();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss xx");
@ -177,8 +178,9 @@ public class EsiaAuthService {
parameters.put("state", "%s");
parameters.put("redirect_uri", redirectUrl);
parameters.put("code", esiaAuthCode);
long startTime = System.currentTimeMillis();
SignResponse signResponse = signMap(parameters);
signSecret = System.currentTimeMillis() - startTime;
String state = signResponse.getState();
String clientSecret = signResponse.getSignature();
String authUrl = esiaConfig.getEsiaBaseUri() + esiaConfig.getEsiaTokenUrl();
@ -194,6 +196,7 @@ public class EsiaAuthService {
.setParameter("token_type", "Bearer")
.setParameter("client_certificate_hash", esiaConfig.getClientCertHash())
.toFormUrlencodedString();
startTime = System.currentTimeMillis();
HttpRequest postReq = HttpRequest.newBuilder(URI.create(authUrl))
.header(HttpHeaders.CONTENT_TYPE, "application/x-www-form-urlencoded")
.POST(HttpRequest.BodyPublishers.ofString(postBody))
@ -203,6 +206,7 @@ public class EsiaAuthService {
.connectTimeout(Duration.ofSeconds(esiaConfig.getConnectionTimeout()))
.build()
.send(postReq, HttpResponse.BodyHandlers.ofString());
requestAccessToken = System.currentTimeMillis() - startTime;
String responseString = postResp.body();
EsiaTokenResponse tokenResponse = objectMapper.readValue(responseString,
EsiaTokenResponse.class
@ -214,7 +218,9 @@ public class EsiaAuthService {
throw new IllegalStateException("Esia response error. " + errMsg);
}
esiaAccessTokenStr = tokenResponse.getAccessToken();
startTime = System.currentTimeMillis();
String verifyResult = verifyToken(esiaAccessTokenStr);
verifySecret = System.currentTimeMillis() - startTime;
if (verifyResult != null) {
throw new EsiaException(verifyResult);
}
@ -228,6 +234,10 @@ public class EsiaAuthService {
catch (Exception e) {
throw new EsiaException(e);
}
finally {
LOGGER.info("Thread {}: SignSecret: {}ms RequestAccessToken: {}ms VerifySecret: {}ms",
Thread.currentThread().getId(), signSecret, requestAccessToken, verifySecret);
}
try {
Response ervuIdResponse = getErvuIdResponse(esiaAccessTokenStr);
createTokenAndAddCookie(response, prnOid, ervuIdResponse.getErvuId(), expiresIn);
@ -365,17 +375,26 @@ public class EsiaAuthService {
}
public Response getErvuIdResponse(String accessToken) {
long requestPersonData = 0, requestIdERVU = 0;
try {
long startTime = System.currentTimeMillis();
PersonModel personModel = personalDataService.getPersonModel(accessToken);
requestPersonData = System.currentTimeMillis() - startTime;
Person person = copyToPerson(personModel);
startTime = System.currentTimeMillis();
String kafkaResponse = replyingKafkaService.sendMessageAndGetReply(requestTopic,
requestReplyTopic, objectMapper.writeValueAsString(person)
);
requestIdERVU = System.currentTimeMillis() - startTime;
return objectMapper.readValue(kafkaResponse, Response.class);
}
catch (Exception e) {
throw new EsiaException(e);
}
finally {
LOGGER.info("Thread {}: RequestPersonData: {}ms RequestIdERVU: {}ms",
Thread.currentThread().getId(), requestPersonData, requestIdERVU);
}
}
private Person copyToPerson(PersonModel personModel) {