====== API Legacy: Integración Microfrontend ======
El API Legacy se debe utilizar para implementar una arquitectura de microfrontend, donde cada aplicación frontend se integra con el API para autorizar el acceso a las funcionalidades que se migran. Esta estrategia facilita el desarrollo y mantenimiento de las aplicaciones frontend, ya que cada una puede ser desarrollada y actualizada de forma independiente.
El flujo para autorizar los accesos desde aplicaciones legacy es:
===== Paso 1 =====
Las aplicaciones legacy consumiran la url del microfrontend y enviarán un parámetro llamado legacyToken de tipo string.
Ejemplo consumo:
http://10.1.140.21:8092/?legacyToken=674157584668526572786e5371774d4552512b3741513d3d@1aba4e1f294858f0e063658c010a6fec
===== Paso 2 =====
El front recibe el parámetro tipo string **legacyToken** con el siguiente formato **contextClient@uuid** el cual al ser separado por el simbolo @ se obtendran 2 fragmentos.
* **contextClient**: Código del cliente.
* **uuid**: token de autenticación.
* **separador**: Caracter de separación de los fragmentos del token legacy. Por defecto se define @
Ejemplo: **legacyToken**=674157584668526572786e5371774d4552512b3741513d3d@1aba4e1f294858f0e063658c010a6fec
* **contextClient**: 674157584668526572786e5371774d4552512b3741513d3d
* **uuid**: 1aba4e1f294858f0e063658c010a6fec
* **separador**: @
===== Paso 3 =====
Se debe tomar el **contextClient** y desencriptarlo para identificar el cliente por medio del método **decrypt-legacy-secure-token** del api-legacy enviando en el parametro **secureToken** el contextClient recibido en el request de consumo de la aplicación legacy que hace la petición.
Ejemplo:
{{ :ada:howto:sicoferp:factory:new-migracion-sicoferp:apilegacy:apilegacy-decrypt.png?600 |}}
Como se puede observar en la imagen de ejemplo el contextClient devuelve viva-dev.
===== Paso 4 =====
Al desencriptar el conteextclient se debe consumir el método del api **autenticate-microfrontend-launcher** el cual puede ser consultado en la documentación de la [[ada:howto:sicoferp:factory:new-migracion-sicoferp:apilegacy#Capa de lógica de negocio|Capa de lógica de negocio]] y pasar el contextClient como token en el header y el uuid como parametro.
Si el uuid está vigente se devolverán los parametros de sesión encriptados con el código 200. Lo que permitirá el acceso a la funcionalidad.
{{ :ada:howto:sicoferp:factory:new-migracion-sicoferp:api-legacy1.png?600 |}}
Si el uuid está vencido o es inválido se devolverá una excepcion con el código 500. Lo que evitará el acceso al microfrontend.
{{ :ada:howto:sicoferp:factory:new-migracion-sicoferp:api-legacy2.png?600 |}}
===== Paso 5 =====
Al realizar la autenticación de forma correcta se obtendra un hash que contendrá los parametros de sesión pero estarán encriptados por lo tanto se debe consumir el servicio **decrypt-legacy-secure-token** el cual recibirá en el parámetro secureToken el hash obtenido del proceso de autenticación como se ve en la imagen.
{{ :ada:howto:sicoferp:factory:new-migracion-sicoferp:apilegacy:apilegacy-decrypt02.png?600 |}}
El servicio devuelve un objeto json con la siguiente estructura.
{
"idOption": "00-00",
"tituloVentana": "Maestro Terceros",
"nitEmpresa": "811032187.8",
"nombreEmpresa": "CAPACITACION",
"codigoMempresa": "9999999999",
"codigoUsuario": "3",
"nombreUsuario": "ADMIN",
"codigoDependencia": "9",
"nombreDependencia": "AVIMA",
"fechaSistemaModulo": "1/12/2022",
"login": "SICOF"
}
===== Paso 6 =====
Se debe tomar de los parámetros desencriptado el idOption y consumir el servicio **ecosystem-config-ws/frontend-route/api/v1/get** para obtener el path del microfrontend como se ve a continuación;
{{ :ada:howto:sicoferp:factory:new-migracion-sicoferp:apilegacy:frontendroute.png?600 |}}
De esta manera se asegura la inicialización dinámica de las rutas del frontend.
===== Consideraciones =====
* El uuid es de un solo uso, de esta manera aseguramos la integridad en los consumos de los nuevos componentes.
* Los parámetros desencriptados son la base para la inicialización del microfrontend.
* Salvo los parámetros opcionales los demás son requeridos por lo tanto se aconseja aplicar validaciones de esas propiedades al desencriptarlas.
* Todo consumo microfrontend es almacenado para efectos de auditoria.
* Se debe parametrizar el idOption por opción o grupo en cada cliente.
[[ada:howto:sicoferp:factory:new-migracion-sicoferp:apilegacy|←Regresar]]