4.- Integración con MFE

4.- Integración con MFE

INDICE DEL CONTENIDO







1. MFE - Módulo de identificación


En este apartado se va a indicar cómo una aplicación debe integrarse con MFE para utlizar su funcionalidad de identificación

1.1 Requisitos Previos

Para comenzar a utlizar MFE – Módulo de Identificación son necesarios los siguientes pasos.

1.1.1.- Configuración de identificación en MFE.

Para poder integrarse con el Modulo de Firma Electrónica la aplicación debe estar dada de alta en MFE con un código de aplicación y  nombre de aplicación y la configuración que se le quiere dar a la aplicación para la identificación de usuarios:

 

  • Código de la aplicación:

  • Nombre de la aplicación:

Configuración general de identificación:

  • Habilitar representación: (SI/NO). Opción para que el usuario, además de poder acceder al portal en nombre  propio, pueda acceder mediante los apoderamientos y habilitaciones que tenga concedidas en el REA y actuar así en nombre de sus apoderados o habilitados.

  • Restringir certificados: (SI/NO). Se activa si para el acceso a la identificación mediante certificado electrónico, se desea restringir solo para un tipo de certificados. En caso de que se desee activar esta restricción se tendrán que indicar a qué tipo de certificados se les permite el acceso:

    • PHYSICAL_PERSON si el certificado usado es de una persona física.

    • JURIDIC_PERSON si el certificado usado es de una persona jurídica.

    • UNRECOGNIZED si el certificado usado no esta reconocido por la entidad validadora.

    • PUBLIC_EMPLOYEE si el certificado usado es de un empleado publico.

    • STAMP si el certificado usado es un certificado cualificado de sello.

    • WEBSITE si el certificado usado es de una sede electrónica.

    • WEBSITE_AUTHENTICATION si el certificado usado es de autentificación de sitio web.

    • TIME_STAMP si el certificado usado es un sello de tiempo.

  • Estilos personalizados: (SI/NO). Opción que permite la personalización del estilo de los iframes, deberá indicar en el alta la URL a la nueva hoja de estilos. La URL deberá ser accesible por la aplicación MFE

  • Juridic2Physical: (SI/NO). Opción que permite acceder a la aplicación como persona jurídica a partir de un certificado de representante de persona jurídica. Durante el proceso de identificación al volver de Cl@ve se mostrará la siguiente imagen. En el caso de selección persona física en el token JWT generado no se guardará información sobre el tipo de certificado con el que se ha realizado la identificación.



  • Tipo JWT: (JWT Titular - JWT Titular/Certificado - JWT Titular/Certificado/Puesto). Opción que permite la obtención de varios tipos de token JWT. La primera opción únicamente ofrece información a cerca del usuario identificado, la opción JWT titular/Certificado, ofrece información del usuario identificado y el certificado utilizado en el proceso de identificación, JWT Titular/Certificado/Puesto, a la información del token anterior le añade el organismo con el que se ha identificado el usuario y los permisos que posee para la aplicación en la que se ha identificado

  • Validación de rol: (SI/NO) Esta opción únicamente se encontrará disponible en le caso de que se seleccione como "Tipo JWT" el valor "JWT Titular/Certificado/Puesto". Permite establecer un control adicional en el proceso de identificación donde se obliga al usuario que se está identificando en la aplicación a poseer permisos para la aplicación a la que está accediendo en el organismo seleccionado para poder finalizar la identificación.

  • Estilos DESY: (SI/NO) Esta opción permite los establecer los estilos DESY para la aplicación.

  • Modalidad con PRETOKEN: (SI/NO) Esta opción debe elegirse para que las aplicaciones que no estén bajo el dominio aragon.es puedan identificarse.



Métodos de identificación: se deben de indicar los métodos o tipos de identificación que se requiera que aparezcan al usuario y qué configuración se le desea dar a cada uno. Estos son los métodos de identificación que actualmente tiene MFE:

Cl@ve
Es un sistema orientado a unificar y simplificar el acceso electrónico de los ciudadanos a los servicios públicos (Más información en https://clave.gob.es/clave_Home/clave.html). Las propiedades que tenemos que indicar en el alta para este método de identificación son las siguientes:

· Nivel de calidad de autentificación (QAA): Nivel de calidad que debe pasar la autenticación con el método elegido. Puede tener cuatro valores que corresponden con los siguientes cuatro niveles:

Nivel 1: No hay ninguna, o hay una confianza mínima, en la identidad alegada. Las credenciales de identidad se aceptan sin ningún tipo de verificación.

Nivel 2: Hay una validación de que las identidades corresponden a personas reales, y los tokens de identificación se entregan con ciertas garantías

Nivel 3: (Por defecto) El registro de la identidad se realiza con métodos que proporcionan una alta certeza sobre la identidad de la persona que la declara, y las credenciales electrónicas son robustas.

Nivel 4: Se requiere un registro presencial al menos una vez, y la credencial electrónica se entrega como certificado hardware criptográfico.



· Métodos de validación del certificado : Cl@ve denomina "método de validación del certificado" a los sub-tipos de identificación que su plataforma ofrece a los usuarios para la identitifcación. Se pueden seleccionar varios dando al usuario varias opciones de identificación.

aFirma: (Por defecto): Método de identificación donde al usuario se le muestran los certificados electrónicos de su navegador (o tarjeta criptográfica) para identificarse. Internamente clave valida éste certificado contra @firma.

AEAT  - Cl@vePin:  Método de identificación donde el usuario para su identificación introduce un pin de corta duración proporcionado por la Agencia Tributaria. 

SS - Cl@vePermante: Método de identificación donde el usuario para su identificación introduce un pin de corta duración proporcionado por la Seguridad Social. 

Stork - Ciudadano de la Unión Europea: Validación del certificado mediante el sistema STORK. STORK es un proyecto europeo para homogeneizar el acceso a las distintas administraciones europeas

SSLogin
Es un sistema que permite la identificación mediante un certificado digital. No requiere especificar ningún parámetro de configuración. Como resultado se obtiene un token JWT idéntico al obtenido a través de una identificación con el método Cl@ve. 




1.1.2 Permisos en PAU para invocar al método de MFE.

Durante el proceso de identificación, una vez que el usuario ha realizada la identificación en el portal, la aplicación integradora debe validar en servidor el token jwt devuelto por MFE resultado de la identificación del usuario.

Para ello la aplicación integradora deberá tener permisos en la “Plataforma de Autorización de Usuarios y aplicaciones“ (PAU) para invocar al método ''validateJwt' del servicio “IdentificationValidationServices” de la aplicación MFE.

En el caso de que la aplicación integradora desee realizar la validación del token JWT generado sin la necesidad de invocar a MFE, es necesario que posea permisos en PAU para invocar al método "getJwtCertificatePublicKey" del servicio "IdentificationValidationServices" de la aplicación MFE. Esto permite a la aplicación integradora la descarga de la clave pública del certificado utilizado para la firma del token JWT con la que podrá realizar su validación

Si la aplicación integradora desea hacer tener la posibilidad de obtener una nueva pareja de tokens JWT, acceso y refresco, deberá tener permisos para invocar al método "refreshToken" del servicio "IdentificationValidationServices" de la aplicación MFE







1.2 Integración de la aplicación  

Para integrar una aplicación con la identificación del MFE debe realizar los siguientes pasos en la página de login.

1.2.1 Etiqueta compatibilidad Internet Explorer

Internet Explorer 11 soporta diferente modos de compatibilidad de documentos que habilitan o inhabilitan diferentes características y puede afectar al funcionamiento. Para evitar que cambie la versión si el usuario
tiene activado el modo compatibilidad, se debe incrustar el siguiente metadato en la cabecera de la página.

Metadato compatibilidad con IE
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />



1.2.2 Archivos javascript

Se debe incluir los archivos javascript donde está parte de la lógica necesaria para realizar la identificación.

Script de identificación
<script type="text/javascript" src="http://[URL_SERV]/mfe_core/js/sslssso.js"></script>



1.2.3 Iframe para incrustar los métodos de identificación

Incrustar el iframe donde aparecerán los métodos de identificación ofrecidos al usuario. Es muy importante que su identificador sea ”mfe_iframe”.

Este iframe llamará a un servicio REST de MFE donde se tendrá que indicar como parte del recurso los siguientes parámetros:

-APPLICATION_ID

Identificador con el que la aplicación se ha dado de alta en MFE

-APPLICATION_URL_REDIRECT

Url de login del propio portal codificada en Base64.

Una vez gestionada la identificación en la plataforma que proceda, se volverá a la url de inicio del portal



El resultado debería ser como el siguiente:

Etiqueta Iframe
<iframe id="mfe_iframe" src="http://[URL_SERV]/mfe_core/rest/identification/[APPLICATION_ID]/[APPLICATION_URL_REDIRECT]"> </iframe>



Iframe con estilos DESY

Las medidas recomendadas del iframe con estilos DESY son las siguientes:

Anchura: 1024px para que se visualice el spinner de las pantallas de carga correctamente

Altura:

Si la aplicación tiene únicamente un método de identificación se recomienda una altura de 520 px.

Si la aplicación tiene varios métodos de identificación se recomienda una altura de 630px.



Además de estas medidas, si se desea que el iframe se redimensione automáticamente según su contenido una vez cargado, se debe incluir en la cabecera de la página padre lo siguiente.

Script para redimensionar
<script src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/4.3.2/iframeResizer.contentWindow.min.js" integrity="sha512-14SY6teTzhrLWeL55Q4uCyxr6GQOxF3pEoMxo2mBxXwPRikdMtzKMYWy2B5Lqjr6PHHoGOxZgPaxUYKQrSmu0A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>



Esto supondrá que el iframe cambie de altura automáticamente para que se pueda visualizar correctamente el contenido si éste supera la altura por defecto del iframe.

1.2.4 Método javascript 'onIdentification'

Crear la función 'onIdentification' para recibir el token de identificación JWT. Esta función no necesita ser invocada desde ninguna parte del código. De forma transparente para el integrador, será llamada por MFE
cuando detecte que un usuario se ha identificado.

On Identification
function onIdentification(operation) { // Token jwt de identificación operation.jwt; // Token de refresco jwt (en caso de tener habilitado el tipo JWT "JWT titular/certificado/puesto") operation.refreshJwt; }

-

En este momento tenemos un usuario identificado y el portal continuará con la lógica de negocio comunicándose con la parte servidor haciéndole llegar el token jwt.

1.2.4.1 Método javascript 'onIdentification' en Angular con varios nodos

En el caso de que el iframe de MFE se ejecute en una aplicación Angular con varios nodos, es necesario controlar el funcionamiento correcto, dentro del método JS onIdentification definido para evitar los múltiples eventos.

Para dicho control, se puede utilizar un campo que haga de flag, el cual al cargar inicialmente la aplicación estará a true, una vez el usuario se identifique correctamente y el flujo entre al método JS onIdentification definido, se controla dicho flag, si es true, este se pasa a false y se continua con la lógica propia de la aplicación para el acceso correcto del usuario. Si se produce un error al identificarse se vuelve a poner a true para que el usuario vuelva a identificarse en el iframe.

On Identification - Angular varios nodos
// Por defecto en el componente se permite identificar la primera vez allowOnIdentification = true; public onIdentification(operation: any): void { if (this.allowOnIdentification) { this.allowOnIdentification = false; service.loginEnLaAplicacion(operation).then(() => { // Lógica de aplicación }.catch(() => { this.allowOnIdentification = true; // Lógica de aplicación }); } }

-

1.2.5 Validación del token jwt

Para obtener los datos de identificación del usuario, se debe validar este jwt contra un servicio REST (POST) de MFE. De esta forma la aplicación asegura la procedencia de la identificación.

URL

PARAMETRO

URL

PARAMETRO

http://[URL_SERV]/mfe_core/rest/identificationValidation/[APPLICATION_ID]?jwt=__JWT__

Parámetro jwt (token jwt de la identificación)

-

Como respuesta de la validación devolverá un json con los siguientes datos:

CAMPO

DESCRIPCIÓN

POSIBLES VALORES

CAMPO

DESCRIPCIÓN

POSIBLES VALORES

status



  • ERROR

  • SUCCESS

  • NOT_VALID

  • NOT_VALID_SSO

errorMessage

mensaje de error cuando el estado de la validación no es “SUCCESS”



authenticationQuality

nivel de calidad de la autentificación que devuelve la entidad validadora



identificationMethod

método de identificación que ha escogido el usuario



eidentifier

identificador del usuario



name

nombre y apellidos del usuario



givenName

nombre de pila del usuario



surname1

primer apellido del usuario



surname2

segundo apellido del usuario



mail

Correo electrónico para el cual ha sido expedido el certificado



certificateType



  • PHYSICAL_PERSON si el certificado usado es de una persona física.

  • JURIDIC_PERSON si el certificado usado es de una persona jurídica.

  • UNRECOGNIZED si el certificado usado no esta reconocido por la entidad validadora.

  • PUBLIC_EMPLOYEE si el certificado usado es de un empleado publico.

  • STAMP si el certificado usado es un certificado cualificado de sello.

  • WEBSITE si el certificado usado es de una sede electronica.

  • WEBSITE_AUTHENTICATION si el certificado usado es de autentificación de sitio web.

  • TIME_STAMP si el certificado usado es un sello de tiempo.

representativeIdentifier

identificador del representante del organismo con el que se accede (solamente para certificados de personas jurídicas)



representativeName

nombre y apellidos del representante del organismo con el que se accede (solamente para certificados de personas jurídicas)



representativeGivenName

nombre de pila del representante del organismo con el que se accede (solamente para certificados de personas jurídicas)



representativeSurname1

primer apellido del representante del organismo con el que se accede (solamente para certificados de personas jurídicas)



representativeSurname2

segundo apellido del representante del organismo con el que se accede (solamente para certificados de personas jurídicas)



representationType

tipo de representación. Indica si la representación la está realizando un ciudadano (CITIZEN) o un empleado público (EMPLOYEE)



procedure

procedimiento habilitado con el que está accediendo el representante.

 



En el caso que la aplicación esté configurada para hacer uso del JWT Titular/Certificado, además de los campos anteriores el JSON incluirá:

CAMPO

DESCRIPCIÓN

POSIBLES VALORES

CAMPO

DESCRIPCIÓN

POSIBLES VALORES

certificateTypeDesc

Descripción del tipo de certificado



authority

Entidad certificadora



certificateUse

Usos del certificado



classification

Clasificación del certificado



organizativeUnit

Descripción de la unidad organizativa



policy

Política del certificado



policyVersion

Versión de la política del certificado



selectedIdp

Identificador del proveedor de identidades contra el que se desea realizar la autenticación.

  • AFIRMA → Certificado electrónico

  • EIDAS → Credencial europea

  • SEGSOC → Clave permanente

  • PIN24H → Clave PIN

serialNumber

Número de serie del certificado



validFromDate

Fecha del comienzo de validez del certificado

Ej: 2019-05-02 jue 12:44:40 +0200

validToDate

Fecha del final de validez del certificado

Ej: 2022-05-01 dom 12:44:40 +0200

loginTime

Fecha de identificación en milisegundos



En el caso que la aplicación esté configurada para hacer uso del JWT titular/certificado/puesto, incluirá los campos del JWT titular y JWT titular/certificado y además, incluirá unos campos extra que son los siguientes:

CAMPO

DESCRIPCIÓN

POSIBLES VALORES

CAMPO

DESCRIPCIÓN

POSIBLES VALORES

organismCode

Código de organismo que ha seleccionado el usuario para identificarse en la aplicación



organismName

Nombre del organismo que ha seleccionado el usuario para identificarse en la aplicación



roleCode

Código del cargo que desempeña el usuario en el organismo seleccionado



roleName

Nombre del cargo que desempeña el usuario en el organismo seleccionado



roleAppCode

Código del rol que tiene asignado el usuario para el organismo seleccionado en la aplicación a la cual desea acceder



roleAppName

Nombre del rol que tiene asignado el usuario para el organismo seleccionado en la aplicación a la cual desea acceder



aud

Nombre de aplicación para la cual se genera el token



user_name

Identificador del usuario: NIF de la persona identificada



authorities

Array que contiene los nombres de los roles que tiene el usuario en el organismo seleccionado para la aplicación a la cual está accediendo. Si no tiene ningún rol, el array estará vacío.







IMPORTANTE

En el momento en que MFE invoca al método 'onIdentification' (punto 4) el usuario ya tiene su identificación SSO aunque, en caso de una identificación incorrecta, el portal no le diese acceso.

En el tratamiento de los diversos estados de la validación del token jwt que requieran volver a identificarse (ERROR y NOT_VALID, NOT_VALID_SSO) se deberá invocar al cierre de sesión o

logout (explicado en el siguiente punto) para  eliminar su identificación del SSO.

También es importante realizar un correcto tratamiento de posibles errores durante el proceso de “login” dentro del portal,  para que ante un posible error que vuelva a la página de inicio se realice un cierre de sesión o logout del usuario para que éste pueda volver a identificarse.

-

1.2.6 Cierre de sesión (logout)

La identificación con MFE tiene implementado un sistema de autenticación única (SSO - Single Sign On) es decir, habilita al usuario para acceder a todos los sistemas integrados con MFE con una sola instancia de identificación.

Este sistema tiene una duración determinada y persiste en el navegador durante este tiempo. Por ello es importante implementar en el portal donde se haya identificado el usuario un cierre de sesión adecuado.


Para ello bastaría con incluir en la lógica de negocio de cierre de sesión implementada en la aplicación, una invocación a un servicio REST (GET) de MFE indicando en el recurso de la url los siguientes parámetros:

· APPLICATION_ID: Identificador con el que la aplicación se ha dado de alta en MFE.

· URL_LOGIN_APLICACION_B64: url de login del propio portal codificada en Base64. Una vez terminado el logout en MFE, redireccionará a esta url.

· IDENTIFICATION_METHOD_ID: Método con el que se identificó el usuario. (devuelto en el json de identificación



http://[URL_SERV]/mfe_core/rest/identification/[APPLICATION_ID]/[APPLICATION_URL_REDIRECT/[IDENTIFICATION_METHOD_ID]/logout



NOTA: en el punto "5.- casos de uso de ejemplo", tiene un ejemplo de integración de MFE - Identificación en un portal del empleado.



1.2.7 Obtención de clave pública del certificado que firma jwt

Para obtener la clave pública del certificado que firma los token jwt, se debe invocar a un servicio REST (GET) de MFE. Se debe indicar el id de aplicación con el que la aplicación se ha dado de alta en MFE por motivos de seguridad.

La url de invocación es la siguiente:

Descarga clave pública del certificado
http://[URL_SERV]/mfe_core/rest/identificationValidation/[APPLICATION_ID]

Los parámetros a rellenar en la url son los siguientes:

  • URL_SERV: URL del servidor al cual se va a invocar

  • APPLICATION_ID: Identificador con el que la aplicación se ha dado de alta en MFE

Como respuesta se devolverá un json con los siguientes datos:

CAMPO

DESCRIPCIÓN

POSIBLES VALORES

CAMPO

DESCRIPCIÓN

POSIBLES VALORES

value

Valor de la clave pública del certificado en base64. Importante: No es el .cer, es la clave pública del .cer



httpStatusCode (solamente si se produce un error)

Código de estado de respuesta HTTP

  • 400 → Se debe a un error en la petición por parámetros incorrectos. Si por ejemplo el identificador de aplicación es nulo o vacío, se obtendrá este código.

  • 403 → Se obtiene debido a un error de ip no autorizada en PAU o a no tener permiso sobre el método invocado.

  • 500 → Se debe a un error interno de MFE al obtener la clave pública del certificado.

errorMessage (solamente si se produce un error)

Mensaje del error



errorCode (solamente si se produce un error)

Código del error



alg

Algoritmo de la clave pública del certificado





A continuación, se indican unos ejemplos de respuesta json:



Respuesta correcta:



Respuesta errónea por identificador de aplicación incorrecto: