Ir al contenido principal

WSO2 IS: Cómo usar la API TOTP (Time-Based One Time Password)

¿Qué es Time-Based One Time Password (TOTP)?

TOTP significa contraseñas de un solo uso basadas en el tiempo y es una forma común de autenticación de dos factores. Las contraseñas numéricas únicas se generan con un algoritmo que utiliza la hora actual como entrada. Las contraseñas basadas en el tiempo caducan y por lo tanto ofrecen una mayor seguridad para 2FA.

En WSO2 IS cuando se habilita la autenticación multifactor, utilizando el autenticador TOTP como segundo paso de autenticación, se puede validar el código TOTP de un usuario mediante la API de TOTP.

Cómo utilizar el servicio TOTP en WSO2 IS

A continuación se muestra un ejemplo de cómo utilizar el servicio de Time-Based One Time Password:

1.Habilitar el servicio de administración de TOTP

Por defecto en WSO2 IS, los WSDL de los servicios de administración están ocultos para los consumidores, para habilitar los servicios se debe cambiar en el archivo <WSO2IS_HOME>/repository/conf/carbon.xml. la siguiente línea:

<HideAdminServiceWSDLs>false</HideAdminServiceWSDLs>

2. Reiniciar el servicio de WSO2 IS

3.Habilitar TOTP

El autenticador Time-Based One Time Password se puede habilitar llamando a la función initTOTP dada en el TOTPAdminService como se muestra a continuación:

curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded'  -H 'Authorization:Basic <base64Encoded string of USERNAME:PASSWORD>' https://localhost:9443/services/TOTPAdminService/initTOTP -k -d 'username=<USERNAME>'

En el caso del usuario admin quedaría de la siguiente forma:

curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded'  -H 'Authorization:Basic YWRtaW46YWRtaW4=' https://localhost:9443/services/TOTPAdminService/initTOTP -k -d 'username=admin'

4. Obtener la Secret Key del usuario

Para obtener la secret key del usuario se deberá ejecutar la siguiente instrucción:

curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded'  -H 'Authorization:Basic <base64Encoded string of USERNAME:PASSWORD>' https://localhost:9443/services/TOTPAdminService/retrieveSecretKey -k -d 'username=<USERNAME>'

En el caso del usuario admin quedaría de la siguiente forma:

curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded'  -H 'Authorization:Basic YWRtaW46YWRtaW4=' https://localhost:9443/services/TOTPAdminService/retrieveSecretKey -k -d 'username=admin'

5. Descargar en el teléfono móvil alguna de las siguientes aplicaciones:

google_auth microsoft_auth

Seleccionar la opción Agregar una cuenta e ingresar la clave obtenida en el paso 3: 5QFLDLKQ2ZGG7J5H

Una vez agregada la clave, se generarán los códigos dinámicos

Quizás también te interese este tutorial: CONFIGURACIÓN DE DOBLE FACTOR DE AUTENTICACIÓN CON TOTP – 

 6. Validar el código TOTP

Para validar el código Time-Based One Time Password se deberá ejecutar la siguiente instrucción:

curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded'  -H 'Authorization:Basic <base64Encoded string of USERNAME:PASSWORD>' https://localhost:9443/services/TOTPAdminService/validateTOTP -k -d 'username=<USERNAME>' -d 'verificationCode=<CODE>'

En el caso del usuario admin quedaría de la siguiente forma:

1 curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded' -H 'Authorization:Basic YWRtaW46YWRtaW4=' https://localhost:9443/services/TOTPAdminService/validateTOTP -k -d 'username=admin' -d 'verificationCode=123456'

La respuesta será falso o verdadero dependiendo si el código es válido o no.