Merge branch 'release/1.8' into develop

This commit is contained in:
Халтобин Евгений 2024-10-23 11:08:40 +03:00
commit 80130666d2
13 changed files with 35 additions and 51 deletions

View file

@ -0,0 +1,5 @@
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
import org.springframework.web.WebApplicationInitializer;
public class SecurityInit extends AbstractSecurityWebApplicationInitializer implements WebApplicationInitializer {
}

View file

@ -46,8 +46,6 @@ public class ReplyingKafkaConfig {
private String replyTopic;
@Value("${ervu.kafka.recruit.reply.topic}")
private String recruitReplyTopic;
@Value("${ervu.kafka.subpoena.extract.reply.topic}")
private String subpoenaExtractReplyTopic;
@Value("${ervu.kafka.registry.extract.reply.topic}")
private String registryExtractReplyTopic;
@ -134,8 +132,7 @@ public class ReplyingKafkaConfig {
public ConcurrentMessageListenerContainer<String, Bytes> subpoenaReplyContainer(
ConcurrentKafkaListenerContainerFactory<String, Bytes> subpoenaKafkaListenerContainerFactory) {
ConcurrentMessageListenerContainer<String, Bytes> container =
subpoenaKafkaListenerContainerFactory.createContainer(recruitReplyTopic,
subpoenaExtractReplyTopic, registryExtractReplyTopic);
subpoenaKafkaListenerContainerFactory.createContainer(recruitReplyTopic, registryExtractReplyTopic);
container.getContainerProperties().setGroupId(groupId);
return container;
}

View file

@ -1,7 +1,6 @@
package ru.micord.ervu.kafka.service.impl;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.header.internals.RecordHeader;
@ -40,8 +39,7 @@ public class SubpoenaReplyingKafkaService extends BaseReplyingKafkaService<Objec
@Override
protected ProducerRecord<String, Object> getProducerRecord(String requestTopic, String replyTopic,
Object requestMessage) {
ProducerRecord<String, Object> record = new ProducerRecord<>(requestTopic,
UUID.randomUUID().toString(), requestMessage);
ProducerRecord<String, Object> record = new ProducerRecord<>(requestTopic, requestMessage);
record.headers().add(new RecordHeader(KafkaHeaders.REPLY_TOPIC, replyTopic.getBytes()));
String headerClass = requestMessage instanceof SubpoenaRequestDto
? recruitHeaderClass : extractHeaderClass;

View file

@ -28,7 +28,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
}
protected void httpConfigure(HttpSecurity httpSecurity) throws Exception {
String[] permitAll = {"/esia/url", "/esia/auth", "esia/refresh"};
String[] permitAll = {"/version", "/esia/url", "/esia/auth", "esia/refresh"};
httpSecurity.authorizeRequests()
.antMatchers(permitAll).permitAll()

View file

@ -1,7 +1,5 @@
package ru.micord.ervu.security.esia.controller;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -54,17 +52,16 @@ public class EsiaController {
if (accessToken == null) {
return null;
}
DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
PersonModel personModel = personalDataService.getPersonModel(accessToken);
PersonDataModel personDataModel = new PersonDataModel();
personDataModel.birthDate = df.format(personModel.getBirthDate());
personDataModel.birthDate = personModel.getBirthDate();
personDataModel.fullname = personModel.getLastName() + " " + personModel.getFirstName() + " "
+ personModel.getMiddleName();
personDataModel.snils = personModel.getSnils();
personDataModel.seriesAndNumber =
personModel.getPassportModel().getSeries() + " " + personModel.getPassportModel()
.getNumber();
personDataModel.issueDate = df.format(personModel.getPassportModel().getIssueDate());
personDataModel.issueDate = personModel.getPassportModel().getIssueDate();
personDataModel.issuedBy = personModel.getPassportModel().getIssuedBy();
personDataModel.issueId = personModel.getPassportModel().getIssueId();
return personDataModel;

View file

@ -1,9 +1,7 @@
package ru.micord.ervu.security.esia.model;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
@ -18,8 +16,7 @@ public class PassportModel implements Serializable {
private String number;
@JsonFormat(pattern = "dd.MM.yyyy")
private Date issueDate;
private String issueDate;
private String issueId;
@ -41,11 +38,11 @@ public class PassportModel implements Serializable {
this.number = number;
}
public Date getIssueDate() {
public String getIssueDate() {
return issueDate;
}
public void setIssueDate(Date issueDate) {
public void setIssueDate(String issueDate) {
this.issueDate = issueDate;
}

View file

@ -1,9 +1,7 @@
package ru.micord.ervu.security.esia.model;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
@ -24,8 +22,7 @@ public class PersonModel implements Serializable {
private String middleName;
@JsonFormat(pattern = "dd.MM.yyyy")
private Date birthDate;
private String birthDate;
private String snils;
@ -71,11 +68,11 @@ public class PersonModel implements Serializable {
this.middleName = middleName;
}
public Date getBirthDate() {
public String getBirthDate() {
return birthDate;
}
public void setBirthDate(Date birthDate) {
public void setBirthDate(String birthDate) {
this.birthDate = birthDate;
}

View file

@ -419,7 +419,7 @@ public class EsiaAuthService {
private Person copyToPerson(PersonModel personModel) {
Person person = new Person();
person.setBirthDate(personModel.getBirthDate().toString());
person.setBirthDate(personModel.getBirthDate());
person.setFirstName(personModel.getFirstName());
person.setLastName(personModel.getLastName());
person.setSnils(personModel.getSnils());
@ -427,7 +427,8 @@ public class EsiaAuthService {
Document document = new Document();
document.setNumber(personModel.getPassportModel().getNumber());
document.setSeries(personModel.getPassportModel().getSeries());
document.setIssueDate(personModel.getPassportModel().getIssueDate().toString());
document.setIssueDate(personModel.getPassportModel().getIssueDate());
person.setDocument(document);
return person;
}
}

View file

@ -1,10 +1,13 @@
package ru.micord.ervu.security.webbpm.jwt.service;
import java.lang.invoke.MethodHandles;
import java.util.Arrays;
import java.util.Base64;
import java.util.Date;
import java.util.Optional;
import javax.crypto.SecretKey;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
@ -13,10 +16,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import ru.micord.ervu.security.webbpm.jwt.JwtAuthentication;
import ru.micord.ervu.security.webbpm.jwt.model.Token;
import ru.cg.webbpm.modules.resources.api.ResourceMetadataUtils;
@ -34,6 +34,8 @@ public class JwtTokenService {
ResourceMetadataUtils.PROJECT_GROUP_ID + "." + ResourceMetadataUtils.PROJECT_ARTIFACT_ID;
private final SecretKey SIGNING_KEY;
@Autowired
private HttpServletRequest request;
@Autowired
public JwtTokenService(@Value("${webbpm.security.token.secret.key:ZjE5ZjMxNmYtODViZC00ZTQ5LWIxZmYtOGEzYzE3Yjc1MDVk}")
@ -78,10 +80,13 @@ public class JwtTokenService {
}
public String getErvuId() {
Optional<Authentication> authentication = Optional.ofNullable(
SecurityContextHolder.getContext().getAuthentication());
String jwtToken = authentication.map(auth -> ((JwtAuthentication) auth).getToken())
String authToken = Optional.ofNullable(request.getCookies())
.map(cookies -> Arrays.stream(cookies)
.filter(cookie -> cookie.getName().equals("auth_token"))
.findFirst()
.map(Cookie::getValue)
.orElseThrow(() -> new RuntimeException("Failed to get auth data. User unauthorized.")))
.orElseThrow(() -> new RuntimeException("Failed to get auth data. User unauthorized."));
return getToken(jwtToken).getUserAccountId().split(":")[1];
return getToken(authToken).getUserAccountId().split(":")[1];
}
}

View file

@ -25,10 +25,6 @@ public class ExtractRpcService extends Behavior {
private final JwtTokenService jwtTokenService;
private final ReplyingKafkaService<Object, Bytes> replyingKafkaService;
@Value("${ervu.kafka.subpoena.extract.request.topic}")
private String subpoenaExtractRequestTopic;
@Value("${ervu.kafka.subpoena.extract.reply.topic}")
private String subpoenaExtractReplyTopic;
@Value("${ervu.kafka.registry.extract.request.topic}")
private String registryExtractRequestTopic;
@Value("${ervu.kafka.registry.extract.reply.topic}")
@ -48,13 +44,8 @@ public class ExtractRpcService extends Behavior {
public FileData getExtract() {
ExtractRequestDto request = new ExtractRequestDto(jwtTokenService.getErvuId(),
formatExtractRegistry);
String requestTopic = request.formatExtractRegistry().equals("1")
? subpoenaExtractRequestTopic
: registryExtractRequestTopic;
String replyTopic = request.formatExtractRegistry().equals("1")
? subpoenaExtractReplyTopic
: registryExtractReplyTopic;
byte[] reply = replyingKafkaService.sendMessageAndGetReply(requestTopic, replyTopic, request).get();
byte[] reply = replyingKafkaService.sendMessageAndGetReply(registryExtractRequestTopic,
registryExtractReplyTopic, request).get();
try {
ResponseData responseData = ResponseData.parseFrom(reply);

View file

@ -10,7 +10,7 @@ import org.springframework.util.StringUtils;
*/
public final class DateUtil {
private static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
public static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
private DateUtil() {}

View file

@ -15,7 +15,7 @@ ESIA_REDIRECT_URL=https://lkrp-dev.micord.ru/fl/
SIGN_URL=https://ervu-sign-dev.k8s.micord.ru/sign
ERVU_KAFKA_BOOTSTRAP_SERVERS=localhost:9092
ERVU_KAFKA_BOOTSTRAP_SERVERS=http://10.10.31.11:32609
ERVU_KAFKA_USERNAME=user1
ERVU_KAFKA_PASSWORD=Blfi9d2OFG
ERVU_KAFKA_SASL_MECHANISM=SCRAM-SHA-256
@ -27,8 +27,6 @@ ERVU_KAFKA_REPLY_TIMEOUT=30
ERVU_KAFKA_RECRUIT_REQUEST_TOPIC=ervu.recruit.info.request
ERVU_KAFKA_RECRUIT_REPLY_TOPIC=ervu.recruit.info.response
ERVU_KAFKA_RECRUIT_HEADER_CLASS=Request@urn://rostelekom.ru/RP-SummonsTR/1.0.5
ERVU_KAFKA_SUBPOENA_EXTRACT_REQUEST_TOPIC=ervu.subpoena.info.request
ERVU_KAFKA_SUBPOENA_EXTRACT_REPLY_TOPIC=ervu.subpoena.info.response
ERVU_KAFKA_REGISTRY_EXTRACT_REQUEST_TOPIC=ervu.extract.info.request
ERVU_KAFKA_REGISTRY_EXTRACT_REPLY_TOPIC=ervu.extract.info.response
ERVU_KAFKA_EXTRACT_HEADER_CLASS=Request@urn://rostelekom.ru/ERVU-extractFromRegistryTR/1.0.3

View file

@ -75,8 +75,6 @@
<property name="ervu.kafka.recruit.request.topic" value="ervu.recruit.info.request"/>
<property name="ervu.kafka.recruit.reply.topic" value="ervu.recruit.info.response"/>
<property name="ervu.kafka.recruit.header.class" value="Request@urn://rostelekom.ru/RP-SummonsTR/1.0.5"/>
<property name="ervu.kafka.subpoena.extract.request.topic" value="ervu.subpoena.info.request"/>
<property name="ervu.kafka.subpoena.extract.reply.topic" value="ervu.subpoena.info.response"/>
<property name="ervu.kafka.registry.extract.request.topic" value="ervu.extract.info.request"/>
<property name="ervu.kafka.registry.extract.reply.topic" value="ervu.extract.info.response"/>
<property name="ervu.kafka.extract.header.class" value="request@urn://rostelekom.ru/ERVU-extractFromRegistryTR/1.0.3"/>