Seguridad de FlowEngine: seguridad de punto final e invocación externa a HTTP IN
Este tutorial explicará cómo funciona la nueva seguridad que se aplica a los nodos "Http In" de nodeRED utilizados para exponer puntos finales con lógica dentro de la plataforma.
Supongamos un ejemplo como el siguiente, en el que se expondrá un punto final:
Para invocar ese punto final, redacta la URL de la siguiente manera: <environment_address>/nodered/<domain>/<node URL>. Para el ejemplo, utilizando el entorno LAB y el dominio "myDomain", quedaría de la siguiente forma: https://lab.onesaitplatform.com/nodered/myDomain/info.
Si intentas invocar este servicio sin más preámbulos, recibirás un error 401 no autorizado.
Para invocarlo correctamente, tendrás que realizar los siguientes pasos:
Autentifícate contra la seguridad de NodeRED. Para ello, realiza la siguiente llamada (en este caso con CURL) con los parámetros indicados:
curl <environment_address>/nodered/<domain>/auth/token -d 'client_id=node-red-editor&grant_type=password&scope=*&username=<platform_username>&password=<user_API_token>'
Environment address: URL base del entorno, por ejemplo https://lab.onesaitplatform.com/
Domain: Nombre del dominio que contiene el punto expuesto.
Platform User: Usuario de la Plataforma.
Token: un token de usuario generado para las API.
El servicio devolverá un token de sesión como éste:{"access_token":"FYbCpUJT4y9wvzgdpeGLyxcaEcZoKHR2EBUXhdI9dtjIhwDFXMeRsOXTaWMaAE2K0NxKqFHt1zcpOK2gCE71ZU1sC4RSjL8MXmWaUcKznLH2dSCqlUSoRa2dn2PXZ5G0","expires_in":604800,"token_type":"Bearer"}
Invoca el punto final con el encabezado "X-OP-NODEKey" y, como valor, usa el token obtenido en el paso anterior.
Siguiendo estos pasos, la invocación al endpoint se realizará correctamente. Los tokens de acceso a la sesión tendrán una validez de 7 días desde su generación y también podrán ser invalidados realizando la siguiente llamada a los servicios de seguridad de nodeRED:
curl --data 'token=<ACCESS_TOKEN>' -H "Authorization: Bearer <ACCESS_TOKEN>" <environment_address>/nodered/<domain>/revoke
Siguiendo el ejemplo anterior:
curl --data 'token=FYbCpUJT4y9wvzgdpeGLyxcaEcZoKHR2EBUXhdI9dtjIhwDFXMeRsOXTaWMaAE2K0NxKqFHt1zcpOK2gCE71ZU1sC4RSjL8MXmWaUcKznLH2dSCqlUSoRa2dn2PXZ5G0' -H "Authorization: Bearer FYbCpUJT4y9wvzgdpeGLyxcaEcZoKHR2EBUXhdI9dtjIhwDFXMeRsOXTaWMaAE2K0NxKqFHt1zcpOK2gCE71ZU1sC4RSjL8MXmWaUcKznLH2dSCqlUSoRa2dn2PXZ5G0" https://lab.onesaitplatform.com/nodered/myDomain/revoke