OneSpan Developer : Authentification locale de l'utilisateur avec un OTP

OneSpan Team,

Dans ce billet de blog, nous allons démontrer comment authentifier un utilisateur final avec un mot de passe à usage unique (OTP). L'OTP est généré par l'application mobile intégrée au SDK Orchestration et activé sur l'appareil de confiance de l'utilisateur final

De là, une demande de connexion est envoyée à l'Intelligent Adaptive Authentication (IAA) de OneSpan avec l'OTP. Cet appel est effectué à partir de l'application web à laquelle accède l'utilisateur final

Avant de commencer

Avant d'explorer le point de terminaison de connexion, vous devez d'abord être membre de la communauté OneSpan et vous inscrire à un compte sandbox gratuit d'Intelligent Adaptive Authentication. Consultez notre blog précédent, OneSpan Cloud Solutions In Action - MyBank Web Portal Demo, Part I pour savoir comment procéder.

Vous devez également vous assurer d'avoir au moins un utilisateur enregistré avant d'essayer cet appel. Pour savoir comment enregistrer un utilisateur, consultez le document OneSpan Developer : Intelligent Adaptive Authentication - User Registration.

Enfin, vous devrez activer l'application modèle Orchestration sur le périphérique de confiance, comme nous l'avons décrit dans les deux derniers blogs : Orchestration SDK (Java Edition) - Trusted Device Activation with Android Studio : Part I et Orchestration SDK (Java Edition) - Trusted Device Activation with Android Studio : Part II

URL du point de terminaison

L'URL de la demande pour cet appel API ressemblera à l'exemple ci-dessous : https://{votre_ID_locataire}.sdb.tid.onespan.cloud/v1/users/{userID@domain}/login

Vous n'aurez pas besoin de fournir cette URL pendant le tutoriel. Il s'agit uniquement de montrer la structure de l'URL. L'URL sera automatiquement attribuée dans l'API interactive lors de l'appel du webservice

Générer un OTP sur le dispositif mobile de confiance :

Afin de vous connecter avec un OTP virtuel, vous devrez suivre les étapes ci-dessous pour en obtenir un à partir de l'application d'exemple. Cette application a été préalablement activée sur le dispositif de confiance de l'utilisateur enregistré.

  • Sous Authentification locale, cliquez sur le bouton "TRY IT" comme indiqué ci-dessous

OneSpan-BlogImage[Authentification_locale_de_l'utilisateur_avec_OTP]1_01

  • Vous serez dirigé vers la page d'authentification locale comme indiqué ci-dessous, où vous pourrez demander un OTP pour vous connecter. Pour le "Type de protection", sélectionnez "Pas de PIN" pour obtenir immédiatement un OTP sans avoir à fournir de méthode d'authentification supplémentaire.

 OneSpan-BlogImage[Authentification_locale_de_l'utilisateur_avec_OTP]1_02

  • Vous recevrez ensuite un OTP, comme indiqué dans la capture d'écran ci-dessous, à utiliser pour vous connecter à l'exercice suivant. Vous devez utiliser cet OTP dans les 30 secondes. Sinon, il expirera, et vous devrez en générer un nouveau.

OneSpan-BlogImage[Authentification_locale_de_l'utilisateur_avec_OTP]1_03

Essayez-le

Afin d'expérimenter l'API de connexion, accédez au document IAA Sandbox Interactive API dans votre compte OneSpan Community. Dans l'éditeur Open API Swagger, développez la ressource "Users". Vous trouverez alors une entrée pour la méthode Login HTTP Post comme indiqué dans l'image ci-dessous

OneSpan-BlogImage[Authentification_locale_de_l'utilisateur_avec_OTP]1_04

Paramètres du chemin URL :

Aux fins de l'appel API de connexion, un paramètre de chemin d'accès est requis pour l'identifiant unique de l'utilisateur. Il sera formaté comme suit : userID@domain. Un exemple de l'ID utilisateur est "iaa_user". Il s'agit de l'ID utilisateur qui a été activé sur le dispositif de confiance. La partie du paramètre qui suit le signe "@" est le domaine de l'utilisateur. Cette entrée doit être remplacée par la chaîne "Sandbox User" présentée ci-dessous, qui est présente dans la section des détails de votre Sandbox sous l'onglet "Intelligent Adaptive Authentication" de la page d'accueil de votre Sandbox.

OneSpan-BlogImage[Authentification_locale_de_l'utilisateur_avec_OTP]1_05

Corps de la demande de connexion de l'utilisateur

Dans la section "Request Body" du point final de connexion, sélectionnez le type d'objet "AdaptiveLoginInput" dans le menu déroulant, comme indiqué ci-dessous. Vous obtiendrez alors un exemple de la charge utile JSON d'une demande de connexion. Il sera alimenté avec un échantillon des objets JSON requis par l'API du type d'objet " AdaptiveLoginInput "

OneSpan-BlogImage[Authentification_locale_de_l'utilisateur_avec_OTP]1_06

Le corps de la demande ressemblera à l'exemple ci-dessous des champs obligatoires du point d'accès de connexion.

{ "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" : { &quot

Charge utile de la demande

Il contient deux objets JSON obligatoires présentés dans le tableau :

Champs de données obligatoires JSON Description Champ Type de données
type d'objet Il s'agit de déclarer que le type d'objet dans les données utiles de la demande est destiné à la solution d'authentification adaptative. Type : Enum
Exemple : "[ AdaptiveLoginInput ]"
références* Il porte les informations d'identification pour authentifier l'utilisateur, y compris l'objet authentificateur. Un OTP est un type d'authentifiant, qui sera utilisé dans cet exemple. Type : objet imbriqué JSON
Exemple : "credentials" : {
"authenticator" : {
"OTP" : "714346"
}
cddc* Méta-données du collecteur de données du dispositif client. Les deux champs browserCDDC et mobileCDDC sont mutuellement exclusifs et collectivement exhaustifs. Type : chaîne de caractères
Exemple : "browserCDDC" ou "mobileCDDC"
relationRef* La référence relationnelle de l'ID utilisateur. Type : string
minLength : 1
maxLength : 150
Exemple : iaa_user
staticPassword* Le mot de passe statique initial attribué à l'utilisateur. Type : string
minLength : 8
maxLength : 255
exemple : Test1234
identifiant de la session Identifiant de session de l'application, formaté sous forme de chaîne hexadécimale ; commun à toutes les transactions liées à la même session. Type : string
pattern : ^[0-9a-fA-F]+$
minLength : 2
maxLength : 100
example : 4ed23ea44f23

Appeler le point de terminaison

À ce stade, nous sommes prêts à effectuer un appel RESTful vers le point de terminaison de connexion en utilisant l'API de l'Environnement de test interactif IAA. Pour effectuer l'appel, cliquez sur le bouton "Try it out" illustré dans la capture d'écran ci-dessous et situé à droite de la section relative à la méthode HTTP POST. Une fois la demande effectuée, vous recevrez le corps de la réponse en retour au format JSON. Il sera similaire à la charge utile de la réponse décrite dans la section suivante.

OneSpan-BlogImage[Authentification_locale_de_l'utilisateur_avec_OTP]7

 

Corps de réponse de la connexion de l'utilisateur

Si l'OTP a été accepté, vous recevrez un corps de réponse similaire à l'exemple ci-dessous, avec un code de réponse 200 qui indique une connexion réussie.

{ "riskResponseCode" : 0, "sessionStatus" : "accepted" }

 

Description des champs du corps de la réponse

Le champ "riskResponseCode" est le code de réponse de Risk Analytics. La valeur "0" dans la réponse ci-dessus indique que la demande a été acceptée et que l'utilisateur a été authentifié avec succès sans qu'aucune mesure supplémentaire ne soit nécessaire. Vous trouverez ci-dessous une liste d'autres valeurs possibles qui peuvent être renvoyées par Risk Analytics. En outre, des valeurs supplémentaires peuvent être configurées par le biais du service de présentation de Risk Analytics.

Comportement d'analyse des risques

Code de réponse au risque (nombre entier)

Accepter 0
Déclin 1
Défi 2
ChallengeSMS 3
ChallengeDevice2FA 5
ChallengeEmail 8
DéfiCronto 11
ChallengeNoPIN 21
DéfiPIN 22
ChallengeEmpreinte digitale 23
ChallengeFace 24

Le champ sessionStatus de la réponse JSON représente l'état actuel de la session après l'envoi de la demande. Le tableau ci-dessous énumère les valeurs d'état possibles.

Statut de la session Description du statut
inconnu L'état est inconnu et la réponse est traitée en externe
en attente de En attente d'une action de l'utilisateur final
accepté Réalisé avec succès
a refusé Refusé par l'utilisateur final
délai d'attente Le délai a expiré après qu'aucune réponse n'ait été reçue dans le délai imparti
échoué L'échec de la validation de l'OTP


Une fois les étapes ci-dessus terminées, l'utilisateur devrait avoir été authentifié avec succès. Restez à l'écoute pour d'autres blogs sur l'utilisation de l'API Intelligent Adaptive Authentication de OneSpan. En attendant, si vous avez des questions, n'hésitez pas à nous joindre sur les forums du portail communautaire OneSpan.
 

OneSpan Sign Developer Community

OneSpan Sign Developer Community

Rejoignez la communauté OneSpan Sign Developer! Forums, blogs, documentation, téléchargements SDK, et plus encore.

Joignez-vous aujourd'hui

The OneSpan Team is dedicated to delivering the best content to help you secure tomorrow's potential. From blogs to white papers, ebooks, webinars, and more, our content will help you make informed decisions related to cybersecurity and digital agreements.