Resolución de Identidad

La Resolución de Identidad es una aplicación que proporciona características para comparar nombres y direcciones suministrados por el usuario con nombres y direcciones conocidos, y proporcionar una respuesta que indique si las comparaciones son coincidentes o no. Típicamente, esto se utiliza en situaciones donde el nombre y la dirección del Acreedor proporcionados por un tercero son comparados por el Banco Acreedor con el nombre y la dirección asociados a la Cuenta del Acreedor citada, aunque puede ser utilizada en cualquier situación donde se necesite una comparación.

Características

Comparación

La comparación es donde podemos tomar dos valores, un valor conocido real y un valor de comparación enviado por el usuario, y compararlos. Estos valores pueden ser el nombre de una persona o una dirección, y cada consulta de comparación puede contener una o más comparaciones de cada tipo. Se devuelve una respuesta que indica si la consulta en su conjunto es una coincidencia, conteniendo puntuaciones para cada comparación sobre cuán bien coinciden esos dos elementos.

Esta comparación se logra al llamar a un netowl producto llamado Namematcher. A pesar del nombre, este producto puede comparar tipos de datos más allá de los nombres de las personas, incluyendo direcciones, nombres de organizaciones, lugares y más.

comparison

Una única consulta de comparación a la Resolución de Identidad puede contener muchas comparaciones, y dependiendo de la NetOwl producto que se está utilizando, esto puede dividirse en muchos NetOwl solicitudes de comparación.

Las consultas de comparación de IPF a Resolución de Identidad se realizarían típicamente utilizando el biblioteca de cliente, pero el transporte es basado en http y también podría ser un custom el enfoque proporcionado coincide con la especificación de la API.

Las consultas de comparación de Resolución de Identidad a NetOwl Namematcher también son http que habla el NetOwl API.

funcionalidad principal

Se pueden realizar comparaciones en campos de diferentes tipos, por ejemplo, el nombre de una persona o su dirección. Una única consulta de comparación puede incluir cualquier número de comparaciones de cada tipo.

La implementación para la comparación se logra utilizando NetOwl Namematcher, que proporcionará una puntuación (0.1) para cada campo que se esté comparando.

Se esperan umbrales para cada campo junto con los campos de consulta de comparación, y si alguno de los puntajes de comparación para una única consulta está por debajo del umbral, entonces la coincidencia de comparación es falsa.

Comparaciones Basadas en Tablas

NetOwladmite tablas de datos para el rendimiento, así como para agregar elementos como alias y custom reglas de coincidencia. resolución de identidad API admite tanto la coincidencia basada en tablas como la coincidencia no basada en tablas. Esto se habilita/deshabilita configurando o no configurando el " tableName " y " fieldName " campos como se ve en el Abrir API documentación.

La Resolución de Identidad no maneja la creación o inserción de datos en NetOwl tablas, esto debe ser manejado por la implementación del lado del cliente.

NetOwl Implementación

NetOwl Namematcher nos permite comparar un único campo de un único tipo en una única solicitud, y devuelve una puntuación entre 0 y 1 que indica cuán similares son esos valores, donde 1 es una coincidencia exacta y 0 es ninguna coincidencia.

Restricciones de Licenciamiento

La licencia actual nos restringe a NetOwl Namematcher, que solo admite una comparación de campo a la vez, por solicitud, y también nos restringe a comparaciones de texto en latín.

Namematchersoporta la comparación de un único valor contra más de un valor real conocido, lo cual actualmente no utilizamos. Esto es potencialmente útil al soportar comparaciones de nombres para cuentas conjuntas donde solo se ha proporcionado un único nombre para el pago.

Biblioteca del Cliente

El cliente de comparación envía consultas de comparación a través de http a la Resolución de Identidad y recibe respuestas de comparación, manejando la serialización/deserialización de las cargas útiles en formato json.

Los clientes pueden llamar a los endpoints http directamente, pero deben preferir utilizar este cliente, ya que abstrae y simplifica gran parte de la configuración requerida.

La biblioteca del cliente es configurable y, como mínimo, debe saber cómo acceder a la Resolución de Identidad para realizar consultas de comparación.

identity-resolution.comparison.http.client {
    host = "localhost"
    port = 8080
}
TLS
Unidireccional

Si Java cacerts ya existe, puede que solo necesite aplicar la siguiente configuración de cliente de comparación.

identity-resolution.comparison.http.client {
    host = null
    port = null
    endpoint-url = "https://host:port/identity/compare"
}
El host y el puerto deben establecerse en nulo, y la ruta de comparación completa /identity/compare debe estar configurado en endpoint-url

Alternativamente, necesitará un almacén de confianza, y no necesitará anular endpoint-url.

identity-resolution.comparison.http.client {
    host = "localhost"
    port = 8443
    ssl {
        trust-store-location = "/absolute/path/to/trust-store.p12"
        trust-store-password = "password"
        trust-store-type = "PKCS12"
    }
}
Mutuo
identity-resolution.comparison.http.client {
    host = "localhost"
    port = 8443
    ssl {
        trust-store-location = "/absolute/path/to/trust-store.p12"
        trust-store-password = "password"
        trust-store-type = "PKCS12"
        key-store-location = "/absolute/path/to/key-store.p12"
        key-store-password = "password"
        key-store-type = "PKCS12"
        key-password = "password"
    }
}
Resolución de Identidad, o su ingreso también debe ser configurado para aceptar TLS mutuo.

Métricas

Las siguientes métricas están expuestas para la comparación de identidades.

Clave Tipo Descripción

identity-comparison.requests

Contador

Un recuento del número de solicitudes de comparación recibidas a través de la API. No se cuenta el número de campos para comparación, por lo que una comparación de un Nombre y una Dirección se considera una solicitud.

identity-comparison.matches

Contador

Un recuento del número de coincidencias de solicitudes de comparación. Una única solicitud para comparar tanto un Nombre como una Dirección tendría una única respuesta que indicaría una coincidencia, o ninguna coincidencia.

Estas métricas están habilitadas en el back-end (resolución de identidad), pero en teoría también podrían funcionar del lado del cliente, cuando el cliente está utilizando el cliente de comparación para las comparaciones. Dependa de com.iconsolutions.ipf.identityresolution:comparison-metrics junto a com.iconsolutions.ipf.identityresolution:comparison-client. La aplicación que utilice este cliente también deberá ser una aplicación de Spring Boot, con Micrometer y AOP habilitados.

NetOwl

Comparación

NetOwl Namematcher se utiliza para cumplir con la funcionalidad de comparación. La configuración mínima requerida para el conector es:

identity-resolution.comparison.netowl {
  default.http.client {
    host = "localhost"
    port = 8080
  }
  table.http.client {
    host = "localhost"
    port = 8080
  }
}

Se espera que NetOwl Namematcher se desplegaría dentro del mismo pod que la Resolución de Identidad, en cuyo caso la configuración anterior puede no ser necesaria, ya que también es la predeterminada.

Manejo Especial

El netowl API Actualmente no maneja comparaciones que solo contengan caracteres especiales. Por ejemplo, la siguiente solicitud fallaría en Netowl:

{
    "actual": {
        "type": "FULL_ADDRESS",
        "value": "10 Downing Street, SW1A 2AA"
    },
    "comparison": ".",
    "minimumScoreToMatch": 0.75
}

Para manejar esto, filtramos cualquiera de estas comparaciones antes de enviar a Netowl y, en su lugar, devolvemos una puntuación de 0.0.

Los caracteres especiales se pueden configurar proporcionando una lista de caracteres al identity-resolution.comparison.netowl.exclusion.special-characters parámetro de configuración. La lista predeterminada consiste en caracteres especiales básicos latinos:

identity-resolution.comparison.netowl.exclusion.special-characters =
[
"/", "\\", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "\"", "{", "}", "_", "[", "]" ,"|", "?", "<", ">", ",", "."," ","-"
]
Para agregar a la lista, puede redefinir la misma clave:
identity-resolution.comparison.netowl.exclusion.special-characters += "~"
Result:
identity-resolution.comparison.netowl.exclusion.special-characters =
[
"/", "\\", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "\"", "{", "}", "_", "[", "]" ,"|", "?", "<", ">", ",", "."," ","-","~"
]
HOCON no admite la eliminación de elementos individuales de la lista. Para eliminar valores, debe sobrescribir toda la lista.

TLS

Unidireccional

Si Java cacerts ya existe, puede que solo necesite aplicar lo siguiente NetOwl comparación de configuración del cliente-utilizando el punto final predeterminado como ejemplo.

identity-resolution.comparison.netowl.default.http.client {
    host = null
    port = null
    endpoint-url = "https://host:port/api/v2/_compare"
}
El host y el puerto deben establecerse en nulo, y la ruta de comparación completa /api/v2/_compare debe estar configurado en endpoint-url

Alternativamente, necesitará un almacén de confianza, y no necesitará anular endpoint-url.

identity-resolution.comparison.netowl.default.http.client {
    host = "localhost"
    port = 8443
    ssl {
        trust-store-location = "/absolute/path/to/trust-store.p12"
        trust-store-password = "password"
        trust-store-type = "PKCS12"
    }
}
Mutuo
identity-resolution.comparison.netowl.default.http.client {
    host = "localhost"
    port = 8443
    ssl {
        trust-store-location = "/absolute/path/to/trust-store.p12"
        trust-store-password = "password"
        trust-store-type = "PKCS12"
        key-store-location = "/absolute/path/to/key-store.p12"
        key-store-password = "password"
        key-store-type = "PKCS12"
        key-password = "password"
    }
}
NetOwlNamematcher , o su ingreso, también debe ser configurado para aceptar Mutual TLS.

Documentación Oficial

Una vez NetOwl se ha iniciado, puede acceder a la documentación del producto visitando el NetOwl url en un navegador.

Por ejemplo, si se despliega localmente (usando local-e2e-test como ejemplo), entonces puede dirigir su navegador a #_netowl_actuator === Actuador El módulo netowl-actuator se incluye en la aplicación de resolución de identidad y añade un contribuyente de información del actuador de spring boot y un indicador de salud a la aplicación.

Los componentes del actuador funcionan de manera predeterminada, pero como mínimo, la resolución de identidad debe saber dónde encontrar NetOwl. Esta URL probablemente será la misma que la utilizada para el conector de comparación.

Esta configuración debe ser proporcionada si se habilita la salud y/o la información.
netowl {
  base-url = "http://localhost:8080"
}
Propiedad Ejemplo Descripción

netowl.base-url

localhost:8080

La URL base requerida para poder comunicarse con NetOwl.

Info

El /actuator/info el punto final incluye el NetOwl detalles del producto (nombre y versión) si NetOwl es accesible. También incluye cualquier error con la conectividad a la NetOwl aplicación, incluidos errores específicos de NetOwl, como problemas de licenciamiento y configuración.

El endpoint de información contendrá un netowl sección

{
    "netowl": {
        "error": "system is unlicensed",
        "product": "NameMatcher",
        "version": "4.9.11.0"
    }
}
Configuración
Esta es la configuración predeterminada del contribuyente de información; no necesita agregar esta configuración explícitamente a menos que necesite valores diferentes.
management.info.netowl {
  enabled = true
  timeout = "2S"
}
Propiedad Ejemplo Descripción

management.info.netowl.enabled

true or false

NetOwlla información está habilitada por defecto, pero puede ser deshabilitada con esta propiedad. Cuando está deshabilitada, el NetOwl los detalles del producto no están incluidos en la información.

management.info.netowl.timeout

2S or 500MS or 1M

El tiempo de espera predeterminado es de 2 segundos, que es la duración que esperaremos para NetOwl para responder al verificar los detalles del producto. Si se excede el tiempo de espera, la información incluirá NetOwl nombre del producto y versión, pero estarán marcados como UNKNOWN

Salud

El /actuator/health el punto final incluye la misma información que se proporciona en el contribuyente de información, y también incluye la salud del NetOwl producto utilizado para comparaciones. El estado general de la aplicación indicará como DOWN if NetOwl se considera que DOWN. Para NetOwl a considerar UP debe responder a un /api/v2 solicitud con un estado de 200 y los detalles del producto.

El endpoint de salud contendrá un netowl sección

{
    "netowl": {
        "details": {
            "error": "system is unlicensed",
            "product": "NameMatcher",
            "version": "4.9.11.0"
        },
        "status": "DOWN"
    }
}
Configuración
Esta es la configuración predeterminada del indicador de salud, no necesita agregar esta configuración explícitamente a menos que necesite valores diferentes.
management.health.netowl {
  enabled = true
  timeout = "2S"
}
Propiedad Ejemplo Descripción

management.health.netowl.enabled

true or false

NetOwlla salud está habilitada por defecto, pero puede ser deshabilitada con esta propiedad. Cuando está deshabilitada, el estado de NetOwl no se considera, y la salud indicará como UP incluso cuando NetOwl sería DOWN.

management.health.netowl.timeout

2S or 500MS or 1M

El tiempo de espera predeterminado es de 2 segundos, que es la duración que esperaremos para NetOwl para responder al verificar la salud. Si se excede el tiempo de espera,NetOwl se considera que DOWN.

Licenciamiento

Las licencias son proporcionadas por NetOwl, y actualmente utilizamos una licencia de desarrollo para NetOwl Namematcher, restringiéndonos a un solo hilo de comparación y tres instancias. La licencia de desarrollo actual se incluye con el netowl-testcontainer módulo para pruebas de integración.

{
  "product": "NameMatcher",
  "type": "Development",
  "thread limit": 1,
  "*": {
    "lifespan": [
      "2022-01-01 00:00Z",
      "2023-01-01 00:00Z"
    ],
    "features": [
      "Latin"
    ]
  },
  "verification": 1778757171272520714
}

La licencia debe existir dentro del contenedor en ejecución en /var/local/netowl-data/license.key para NetOwl Namematcher para trabajar, incluida la documentación alojada. Para el testcontainer, se monta directamente en el contenedor desde el classpath; al desplegar con docker compose, la licencia puede montarse desde un volumen del sistema de archivos local. En un despliegue de kubernetes, la licencia podría provenir de un config map, como se observa en identity-resolution-deployments.

Alternativamente, la licencia puede ser PUBLICADA a través de http, por ejemplo:

curl --request POST \
  --url http://localhost:8081/api/v2/license-key \
  --header 'Content-Type: application/json' \
  --data '{
  "product": "NameMatcher",
  "type": "Development",
  "thread limit": 1,
  "*": {
    "lifespan": [
      "2022-01-01 00:00Z",
      "2023-01-01 00:00Z"
    ],
    "features": [
      "Latin"
    ]
  },
  "verification": 1778757171272520714
}'

La licencia podría ser publicada desde un contenedor de inicialización, o incluso enviado manualmente utilizando el NetOwl UI.

netowl license upload

Después de enviar la licencia, la interfaz de usuario cambiará e incluirá enlaces a la documentación oficial.

netowl licensed

Actualizando NetOwl

El NetOwl documentación tiene una guía de instalación que incluye una sección sobre la actualización desde versiones anteriores. También hay una página de historial de versiones que enumera los principales cambios en cada versión.

Pasos típicos para absorber una nueva versión de NetOwl Namematcher are:

  1. NetOwllos binarios y las licencias se obtienen de NetOwl, y el binario debe ser cargado manualmente en Nexus.

  2. Ejecute el trabajo de Jenkins netowl-namematcher, que verifica y ejecuta el pipeline de Jenkins de netowl-namematcher. Esto produce un registry.ipf.iconsolutions.com/netowl-namematcher imágenes de docker etiquetadas con latest y la versión utilizada para ejecutar el trabajo.

  3. Actualice el módulo netowl-testcontainer con la versión correcta; las pruebas de integración ahora utilizarán la última versión y pueden ser utilizadas para verificar que la Resolución de Identidad funciona con el Namematcher actualizar.

  4. Actualice el e2e_functional.yml en local-e2e-test con la versión correcta y ejecute las pruebas e2e para asegurarse de que todo esté funcionando correctamente.

NetOwl Aplicación TLS

NetOwl Namematcher es una aplicación web basada en Apache Tomcat, por lo tanto, habilitar TLS deberá hacerse antes de construir la imagen de docker, o después del hecho reemplazando el Tomcat.server.xml archivo con uno configurado correctamente para TLS. También deberá estar presente un keystore bajo el NetOwl directorio de instalación.

Para más información, consulte el documentación oficial, que tiene una sección sobre TLS.

Agrupe la configuración TLS en la imagen de docker

Antes de construir el NetOwl Namematcher imagen de docker, coloque un archivo de keystore en el directorio de instalación bajo /server/. Luego edite el archivo server.xml de Tomcat en el directorio de instalación, bajo /server/conf/server.xml Necesitará lo siguiente:

<Connector port="8443" keystoreFile="keystore.jks" keystorePass="password"
           scheme="https" secure="true" clientAuth="false" maxThreads="150"
           SSLEnabled="true" sslProtocol="TLS" protocol="org.apache.coyote.http11.Http11NioProtocol" />

Construya la imagen de docker.

Monte la configuración de TLS en el contenedor

Monte el almacén de claves en el NetOwl Namematcher contenedor debajo /usr/local/netowl-inst/server. Luego monte un server.xml, reemplazando el que se encuentra dentro del contenedor en /usr/local/netowl-inst/server/conf/server.xml, y conteniendo lo siguiente.

Copia el archivo server.xml del directorio de instalación para una configuración de referencia.
<Connector port="8443" keystoreFile="keystore.jks" keystorePass="password"
           scheme="https" secure="true" clientAuth="false" maxThreads="150"
           SSLEnabled="true" sslProtocol="TLS" protocol="org.apache.coyote.http11.Http11NioProtocol" />

En un archivo de docker compose, esto podría verse así:

  netowl-namematcher:
    image:releases-registry.ipfdev.co.uk/thirdparty/netowl-namematcher:4.9.11.0
    container_name: netowl-namematcher
    ports:
      - "8081:8080"
      - "8443:8443"
    volumes:
      - ./config/netowl-namematcher/license.key:/var/local/netowl-data/license.key
      - ./config/netowl-namematcher/keystore.jks:/usr/local/netowl-inst/server/keystore.jks
      - ./config/netowl-namematcher/server.xml:/usr/local/netowl-inst/server/conf/server.xml

Aplicación de Resolución de Identidad

La resolución de identidad es una Spring Boot aplicación basada, y se pretende que se implemente junto a Namematcher para satisfacer la función de comparación. Como es una aplicación de Spring Boot,https://docs.spring.io/spring-boot/docs/2.5.4/reference/html/application-properties.html#application-properties[se admiten todas las propiedades habituales de la aplicación de Spring].

Hocon es la forma principal de configurar la resolución de identidad, aunque también se admiten archivos application.properties.

Para la configuración de NetOwl conectividad, consulte el NetOwl sección .

Métricas

Prometheuslas métricas de aplicación compatibles se exponen bajo /actuator/prometheus

Las métricas específicas de características e implementación (por ejemplo, comparación o netowl) también pueden ser expuestas bajo este punto final y están documentadas en las secciones relevantes.

Actuador

Los endpoints de salud e información también incluyen el NetOwl dependencia. Consulte el NetOwl Sección del actuador para más información.

La Resolución de Identidad viene con la siguiente configuración de punto final del actuador por defecto.

management.endpoints.web.exposure.include = [health, info, prometheus]

Si desea deshabilitar los puntos finales de salud y/o de información, deberá hacerlo explícitamente, cambiando el arreglo de inclusiones en un application.conf.

management.endpoints.web.exposure.include = [prometheus] //Look ma, no health

TLS La resolución de identidad es una Spring Boot aplicación, que acepta un conjunto de server.ssl.* propiedades para configurar TLS.

si el tls del servidor está habilitado, también configure comparación cliente tls