¿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:
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.