SUPPORT-8914: add new network-attribute
This commit is contained in:
parent
26fad332b0
commit
f351dcd4ce
4 changed files with 155 additions and 3 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
53
backend/src/main/java/ru/micord/ervu/util/NetworkUtils.java
Normal file
53
backend/src/main/java/ru/micord/ervu/util/NetworkUtils.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue