En un anterior a2f artículo hablamos de Swivel como herramienta externa para integrar nuestras aplicaciones a Scriptcase, sin embargo, es probable que dicha función la pueda tener una aplicación menos robusta como por ejemplo un desarrollo propio em NodeJS.

En este ejemplo, se desarrolló una aplicación en NodeJS un sistema de a2f en donde no solo pueden hacer doble autenticación por medio de un OTC (On Time Code) (Soft Token) sino también con un dispositivo (Hard Token), en este caso particular los de la familia FIDO de FEITIAN (https://www.ftsafe.com/products/FIDO). En el caso del OTC, este podría ser generado por ejemplo con Google Aunthenticator.

NodeJS: Este documento se centra en cómo desde Scriptcase se usa esos servicios. Esta implementación aunque fué propia se tuvo especial cuidado en las interfaces, por tal razón se documentaron claramente para cada una de estas opciones, PHP, .Net y Angular.

NodeJS En la documentación de PHP se nos daba la siguiente información:


php_sdk

v1.2.0

auth2factor PHP Integration SDK

Requisitos

  • sudo apt-get install php5-curl
  • sudo apt-get install composer

Utiliza Firebase JWT para firmado HMAC. Si no usas Composer, copiar las librerías de Firebase JWT a tu solución.

API

Configurar hostname, API key y secret

$HOST = “https://localhost”;

$API_KEY = “…”;

$API_SECRET = “…”;

$a2f_client = new auth2factor($HOST, $API_KEY, $API_SECRET);

Autenticación

delegate

Retorna un token temporal. Utilizado para solicitar verificación OTC/U2F.

Returns a temporary login token. Used to request an OTC/U2F verification.

$tokens = $a2f_client->delegate(“user@me.com”);

$req_token = $tokens[“x-app-sign-request”];

$u2f_req = $tokens[“x-u2f-sign-request”];

nodejs

validate_otc

Valida OTC. Retorna un bearer token, de otro modo false.

Verifies OTC. Returns a bearer token, otherwise false.

$sid = $a2f_client->validate_otc(“…temporary token”, “001122”);

validate_u2f

Valida U2F. Retorna un bearer token, de otro modo false. Debe ser llamado una vez el cliente firme exitosamente con u2f.sign.

Verifies U2F. Returns a bearer token, otherwise false. Must be called once succesfully signed with u2f.sign.

$client_data = “eyJ0eXAiO…”;

$signature_data = “AQAAADUw…”;

$sid = $a2f_client->validate_u2f(“…temporary token”, $client_data, $signature_data);

Registro de llaves

request_challenge

Solicita un U2F challenge para iniciar el registro de una llave.

Requests an U2F challenge to initiate key registration.

$challenge = $a2f_client->request_challenge(“a valid bearer token”);

register_key

Registra una llave U2F. Debe ser llamado una vez u2f.register retorne exitosamente.

Registers an U2F security key. Must be called once u2f.register returns succesfully.

$client_data = “eyJ0eXAiO…”;

$registration_data = “AQAAADUw…”;

$a2f_client->register_key(“a valid bearer token”, $client_data, $registration_data);

Implementación U2F

FIDO U2F – Enrolamiento

Una vez autenticado, el usuario ingresa a Configuración de Cuenta de la solución y le ofrece al usuario enrolar llave.

cookbook/register.php

  • Obtiene un U2F challenge: API request_challenge
  • Llama a libreria cliente u2f.register con el challenge y solicita firmar
  • Se procede a ingresar la llave
  • Se almacena la confirmación exitosa en register_key.php: API register_key

FIDO U2F – Autenticación

Si el usuario tiene llaves registradas en el dominio donde se autentico en el 1er paso.

cookbook/sign.php

  • Obtiene un conjunto de sign requests
  • Llama a libreria cliente u2f.sign con los sign requests y solicita firmar
  • Se procede a ingresar la llave
  • Se valida en sign_key.php y obtiene un bearer token: API validate_u2f

Libreria Javascript para U2F

Incluir libreria minificada

<head>

<script src=”js/a2f.js”></script>

</head>

Contiene:

  • Axios para AJAX / REST axios.min.js
  • Axios config axios-config.js
  • U2F u2f-api.js
  • U2F utils u2f-utils.js

Con base en lo anterior, se analizó y se definió que a nivel de Macro Algoritmo el programa debería:

  1. Definir parámetros de conexión.
  2. Con el usuario logueado en la 1a autenticación ( correo electrónico ), se conecta al servidor para solicitar un Token.
  3. Con la recepción del Token, se solicita el OTC al usuario.
  4. Se envía el OTC.
  5. Se recibe la respuesta si es autorizado o no la segunda autenticación.
  6. Si es exitoso redireccione la aplicación al Menú.
This image has an empty alt attribute; its file name is codigo_scriptcase_a2f.nodejs.png

Espero les haya servido estos 3 artículos de este interesante tema de a2f, y sea cual fuese el método a utilizar no olviden en siempre revisar la documentación, hacer pruebas y por último implementarlo en Scriptcase.

Por ,

15 de April de 2019

Compartir esta publicacion

a

También podría gustarte…

Tendencias de TI y Desarrollo Web para 2024: Hacia Nuevos Horizontes Tecnológicos

El mundo de la Tecnología de la Información (TI) y el Desarrollo Web está en constante evolució...

Sistemas web 101: comprensión de los fundamentos y beneficios

En la era digital actual, los sistemas web se han convertido en una parte integral de nuestra vida ...

¿Por qué el low-code es esencial para cualquier empresa?

Low-code es el término en el área de TI que se refiere al proceso de utilizar poco código en el ...

También podría gustarte…

Obtenga nuevas publicaciones, recursos, ofertas y más cada semana.

Utilizaremos la información provista para enviarle por correo electrónico boletines y ofertas. Puede darse de baja de los correos electrónicos en cualquier momento simplemente haciendo clic en el enlace "unsubscribe" en la parte inferior de cualquier correo electrónico o contactándonos a privacy @ scriptcase.net . Obtenga más información sobre nuestra Privacy Police .