Merge branch 'release/1.8' into develop
This commit is contained in:
commit
80130666d2
13 changed files with 35 additions and 51 deletions
5
backend/src/main/java/SecurityInit.java
Normal file
5
backend/src/main/java/SecurityInit.java
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
|
||||
import org.springframework.web.WebApplicationInitializer;
|
||||
|
||||
public class SecurityInit extends AbstractSecurityWebApplicationInitializer implements WebApplicationInitializer {
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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() {}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"/>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue