SUPPORT-8914: add new network-attribute

This commit is contained in:
adel.ka 2025-02-11 13:38:29 +03:00 committed by adel.kalimullin
parent 26fad332b0
commit f351dcd4ce
4 changed files with 155 additions and 3 deletions

View file

@ -8,11 +8,16 @@ public class AuditAuthorizationEvent extends AuditEvent {
private String lastName;
private String middleName;
private String snils;
private String serverIp;
private String serverHostName;
private String clientIp;
private String clientHostName;
public AuditAuthorizationEvent(
String esiaPersonId, String eventTime, String firstName,
String lastName, String middleName, String snils,
String status, String eventType) {
String status, String eventType, String serverIp,
String serverHostName, String clientIp, String clientHostName) {
super(esiaPersonId, eventTime);
this.status = status;
this.firstName = firstName;
@ -20,6 +25,10 @@ public class AuditAuthorizationEvent extends AuditEvent {
this.middleName = middleName;
this.snils = snils;
this.eventType = eventType;
this.serverIp = serverIp;
this.serverHostName = serverHostName;
this.clientIp = clientIp;
this.clientHostName = clientHostName;
}
public String getFirstName() {
@ -70,4 +79,35 @@ public class AuditAuthorizationEvent extends AuditEvent {
this.eventType = eventType;
}
public String getServerIp() {
return serverIp;
}
public void setServerIp(String serverIp) {
this.serverIp = serverIp;
}
public String getServerHostName() {
return serverHostName;
}
public void setServerHostName(String serverHostName) {
this.serverHostName = serverHostName;
}
public String getClientIp() {
return clientIp;
}
public void setClientIp(String clientIp) {
this.clientIp = clientIp;
}
public String getClientHostName() {
return clientHostName;
}
public void setClientHostName(String clientHostName) {
this.clientHostName = clientHostName;
}
}

View file

@ -16,6 +16,7 @@ import ru.micord.ervu.audit.service.AuditService;
import ru.micord.ervu.security.esia.model.PersonModel;
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
import ru.micord.ervu.util.DateUtils;
import ru.micord.ervu.util.NetworkUtils;
/**
* @author Adel Kalimullin
@ -60,6 +61,11 @@ public class BaseAuditService implements AuditService {
@Override
public void processAuthEvent(HttpServletRequest request, PersonModel personModel, String status,
String eventType) {
String serverIp = NetworkUtils.getServerIp();
String clientIp = NetworkUtils.getClientIp(request);
String serverHostName = NetworkUtils.getHostName(serverIp);
String clientHostName = NetworkUtils.getHostName(clientIp);
AuditAuthorizationEvent event = new AuditAuthorizationEvent(
personModel.getPrnsId(),
DateUtils.getClientTimeFromRequest(request),
@ -68,7 +74,11 @@ public class BaseAuditService implements AuditService {
personModel.getMiddleName(),
personModel.getSnils(),
status,
eventType
eventType,
serverIp,
serverHostName,
clientIp,
clientHostName
);
String message = convertToMessage(event);
auditPublisher.publishEvent(authorizationTopic, message);

View file

@ -0,0 +1,53 @@
package ru.micord.ervu.util;
import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
/**
* @author Adel Kalimullin
*/
public final class NetworkUtils {
private static final Logger LOGGER = LoggerFactory.getLogger(NetworkUtils.class);
private static final String IP_HEADER = "X-Forwarded-For";
private static final String UNKNOWN = "unknown";
private NetworkUtils() {
}
public static String getServerIp() {
try {
InetAddress inetAddress = InetAddress.getLocalHost();
return inetAddress.getHostAddress();
}
catch (UnknownHostException e) {
LOGGER.error("Failed to get local IP address", e);
return UNKNOWN;
}
}
public static String getClientIp(HttpServletRequest request) {
String ip = request.getHeader(IP_HEADER);
if (StringUtils.hasText(ip) && !ip.equalsIgnoreCase(UNKNOWN)) {
return ip.split(",")[0].trim();
}
else {
return request.getRemoteAddr();
}
}
public static String getHostName(String ip) {
try {
InetAddress inetAddress = InetAddress.getByName(ip);
return inetAddress.getHostName();
}
catch (UnknownHostException e) {
LOGGER.error("Unknown host for IP {}", ip, e);
return UNKNOWN;
}
}
}

View file

@ -865,7 +865,6 @@
<componentRootId>573a720b-91f7-4e25-a441-7fd3133fdf31</componentRootId>
<name>HB - запрет на постановку в налоговом органе физического лица в качестве налогоплательщика, применяющего спец</name>
<container>true</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
<properties>
@ -2039,6 +2038,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="a1579d08-139a-429e-8601-2bf95aa91147">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="56f58b69-0324-4823-bb69-98682542e514">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -2450,6 +2465,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="f2041b5d-0cd4-4b7f-a790-98edc48e9d86">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="8ae2b128-9044-428e-b88e-7095f1207c97">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -2885,6 +2916,22 @@
<scripts id="f203f156-be32-4131-9c86-4d6bac6d5d56">
<enabled>false</enabled>
</scripts>
<scripts id="9d29fb9f-020d-46eb-a8c4-efd831aae46a">
<classRef type="TS">
<className>LinkClickHandler</className>
<packageName>ervu</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>eventType</key>
<value>
<simple>"NAVIGATION_TO_SOURCE"</simple>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="67caa536-dc5e-49c6-a8b9-c3c4cf9d0459">
<prototypeId>fd7e47b9-dce1-4d14-9f3a-580c79f59579</prototypeId>
@ -3167,6 +3214,7 @@
<componentRootId>613a502f-2276-454e-bb91-4596be5e94cf</componentRootId>
<name>Гиперссылка - Закон о воинской обязанности и военной службе, ст. 7.</name>
<container>false</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="2fe08181-8a1e-4cda-be3a-0b0ddcb21603">
<properties>
@ -3208,6 +3256,7 @@
<componentRootId>81c3d5d2-0f2e-401d-b107-4ad7467f7b30</componentRootId>
<name>Текст(гссылка) - Закон о воинской обязанности и военной службе, ст. 7.</name>
<container>false</container>
<expanded>false</expanded>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>