Desarrollador de OneSpan: Autenticación local del usuario con un OTP

En esta entrada del blog, demostraremos cómo autenticar a un usuario final con una contraseña de un solo uso (OTP). La OTP es generada por la aplicación móvil integrada con el SDK de orquestación y activada en el dispositivo de confianza del usuario final
Desde allí, se envía una solicitud de inicio de sesión a OneSpan Intelligent Adaptive Authentication (IAA) junto con la OTP. Esta llamada se realiza desde la aplicación web a la que accede el usuario final
Antes de empezar
Antes de explorar el punto final de inicio de sesión, primero debe ser miembro de la Comunidad OneSpan y registrarse para obtener una cuenta gratuita de sandbox de Autenticación Adaptativa Inteligente. Consulte nuestro blog anterior, Soluciones en la nube de OneSpan en acción - Demostración del portal web de MyBank, Parte I para obtener instrucciones sobre cómo hacerlo.
También debes asegurarte de tener al menos un usuario registrado antes de intentar esta llamada. Para aprender a registrar un usuario, consulte OneSpan Developer: Intelligent Adaptive Authentication - User Registration.
Por último, deberá tener activada la aplicación de ejemplo de Orchestrationen el dispositivo de confianza, tal y como hemos descrito en los dos últimos blogs: Orchestration SDK (Java Edition ) - Activaciónde dispositivos de confianza con Android Studio:
URL del punto final
La URL de solicitud para esta llamada a la API se parecerá al ejemplo siguiente: https://{su_ID_de_arrendatario}.sdb.tid.onespan.cloud/v1/users/{userID@domain}/login
No necesitarás proporcionar esta URL durante el tutorial. Es sólo para mostrar la estructura de la URL. La URL se asignará automáticamente en la API interactiva cuando se llame al servicio web
Generar una OTP en el dispositivo móvil de confianza:
Para iniciar la sesión con una OTP virtual, es necesario seguir los pasos que se indican a continuación para obtener una desde la app de ejemplo, que se ha activado previamente en el dispositivo de confianza del usuario registrado.
- En la sección de autenticación local, haga clic en el botón "PRUEBA", como se indica a continuación
- Se le dirigirá a la página de autenticación local como se muestra a continuación, donde podrá solicitar una OTP para iniciar sesión. Para el "Tipo de protección" seleccione "Sin PIN" para obtener inmediatamente una OTP sin necesidad de proporcionar ningún método de autenticación adicional.
- A continuación, recibirás una OTP como la que se muestra en la siguiente captura de pantalla, que deberás utilizar para iniciar sesión en el siguiente ejercicio. Debe utilizar esta OTP antes de 30 segundos. De lo contrario, caducará y tendrá que generar una nueva.
Pruébalo
Para experimentar con la API de inicio de sesión, navegue hasta el documento IAA Sandbox Interactive API en su cuenta de la Comunidad OneSpan. En el editor de Open API Swagger, expanda el recurso "Usuarios". A continuación, encontrará una entrada para el método Login HTTP Post como se muestra en la imagen siguiente
Parámetros de la ruta URL:
A efectos de la llamada a la API de inicio de sesión, hay un parámetro de ruta requerido para el identificador único de usuario. Se formateará como userID@domain. Un ejemplo de userID es "iaa_user". Es el ID de usuario que se ha activado en el dispositivo de confianza. La parte del parámetro que sigue al signo "@" es el dominio del usuario. Esta entrada debe sustituirse por la cadena "Usuario del entorno de pruebas" que se muestra a continuación, que está presente en la sección de detalles del entorno de pruebas en la pestaña "Autenticación adaptativa inteligente" de la página de inicio del entorno de pruebas.
Cuerpo de la solicitud de inicio de sesión del usuario
En la sección "Request Body" del punto final de inicio de sesión, seleccione el tipo de objeto "AdaptiveLoginInput" en el menú desplegable, como se muestra a continuación. A continuación, obtendrá un ejemplo de la carga útil JSON de una solicitud de inicio de sesión. Se rellenará con una muestra de los objetos JSON que requiere la API del tipo de objeto " AdaptiveLoginInput "
El cuerpo de la solicitud se parecerá al ejemplo siguiente de los campos obligatorios del punto final de inicio de sesión.
{ "objectType": "AdaptiveLoginInput", "cddc": { "browserCDDC": { "fingerprintRaw": "{browser:{\"userAgent\":Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36},support:{\"ajax\":true,\"boxModel\":undefined,\"changeBubbles\":undefined,\"checkClone\":true,\"checkOn\":true,\"cors\":true,\"cssFloat\":undefined,\"hrefNormalized\":undefined,\"htmlSerialize\":undefined,\"leadingWhitespace\":undefined,\"noCloneChecked\":true,\"noCloneEvent\":undefined,\"opacity\":undefined,\"optDisabled\":undefined,\"style\":undefined,\"submitBubbles\":undefined,\"tbody\":undefined},computer:{\"screenWidth\":2560,\"screenHeight\":1440,\"OS\":\"Microsoft Windows\",\"platform\":\"Win32\"},additional:{}}", "fingerprintHash": "e96dadc9651f5fe8f071110eb174fe8e7a17a9d7a96b3b1980c13e5b4af3a4d7" } }, "relationshipRef": "iaa_user", "sessionID": "4ED23EA44F23", "clientIP": "192.168.0.1", "credentials": { "authenticator": { "
Solicitud de carga útil
Contiene dos objetos JSON obligatorios que se muestran en la tabla:
Campos de datos obligatorios JSON | Descripción | Campo Tipo de datos |
---|---|---|
objetoTipo* | Esto es para declarar el tipo de objeto en la carga útil de la solicitud es para el propósito de la solución de autenticación adaptativa. | Tipo: Enum Ejemplo: "[ AdaptiveLoginInput ]" |
credenciales* | Lleva las credenciales para autenticar al usuario incluyendo el objeto autenticador. Un OTP es un tipo de autentificador, que se utilizará en este ejemplo. | Tipo: objeto anidado JSON Ejemplo: "credentials": { "authenticator": { "OTP": "714346" } |
cddc* | Metadatos del recolector de datos del dispositivo del cliente. Los dos campos browserCDDC y mobileCDDC son mutuamente excluyentes y colectivamente exhaustivos. | Tipo: cadena Ejemplo: "browserCDDC" o "mobileCDDC" |
relaciónRef* | La referencia de la relación del ID del usuario. | Tipo: cadena minLength: 1 maxLength: 150 Ejemplo: iaa_user |
staticPassword* | La contraseña estática inicial asignada al usuario. | Tipo: cadena minLength: 8 maxLength: 255 ejemplo: Test1234 |
sessionID* | Identificador de sesión de la aplicación formateado como una cadena hexadecimal; común para todas las transacciones relacionadas con la misma sesión. | Tipo: cadena patrón: ^[0-9a-fA-F]+$ minLength: 2 maxLength: 100 ejemplo: 4ed23ea44f23 |
Llamada al punto final
En este punto, estamos listos para hacer una llamada RESTful al punto final de inicio de sesión utilizando la API interactiva del Sandbox de IAA. Para realizar la llamada, haga clic en el botón "Probar" que se muestra en la siguiente captura de pantalla y que se encuentra a la derecha de la sección del método HTTP POST. Una vez solicitado, recibirá el cuerpo de la respuesta en formato JSON. Será similar a la carga útil de respuesta descrita en la siguiente sección.
Cuerpo de la respuesta de inicio de sesión del usuario
Si la OTP fue aceptada, recibirás un cuerpo de respuesta similar al del ejemplo siguiente, con un código de respuesta 200 que indica que el inicio de sesión fue exitoso.
{"riskResponseCode": 0, "sessionStatus": "accepted" }
Descripción de los campos del cuerpo de la respuesta
El campo "riskResponseCode" es el código de respuesta de Risk Analytics. El valor "0" en la respuesta anterior indica que la solicitud fue aceptada y el usuario se autenticó con éxito sin necesidad de tomar medidas adicionales. A continuación se muestra una lista de otros posibles valores que puede devolver Risk Analytics. Además, se pueden configurar valores adicionales a través del Servicio de Presentación de Análisis de Riesgos.
Comportamiento del análisis de riesgos |
Código de respuesta al riesgo (entero) |
---|---|
Aceptar | 0 |
Declinación | 1 |
Desafío | 2 |
DesafíoSMS | 3 |
DesafíoDispositivo2FA | 5 |
DesafíoCorreo electrónico | 8 |
DesafíoCronto | 11 |
ChallengeNoPIN | 21 |
ChallengePIN | 22 |
DesafíoHuellas dactilares | 23 |
ChallengeFace | 24 |
El campo sessionStatus
de la respuesta JSON representa el estado actual de la sesión tras el envío de la solicitud, la tabla siguiente enumera los posibles valores de estado.
Estado de la sesión | Descripción del estado |
---|---|
desconocido | El estado es desconocido y la respuesta se está gestionando externamente |
pendiente | A la espera de una acción del usuario final |
aceptado | Completado con éxito |
rechazado | Rechazado por el usuario final |
tiempo de espera | Se ha agotado el tiempo tras no recibirse ninguna respuesta en el plazo establecido |
falló | El fallo de validación de la OTP |
Una vez completados los pasos anteriores, el usuario debería haberse autenticado con éxito. Esté atento a más blogs sobre el uso de la API de autenticación adaptativa inteligente de OneSpan. Mientras tanto, si tiene alguna pregunta, no dude en ponerse en contacto con nosotros en los foros del portal de la comunidad de OneSpan.