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:
commit
39a1f753e3
36 changed files with 1062 additions and 163 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue