Connexion via un code Quick Response

Introduction

Le QR Code Login est un mécanisme d'authentification propre à IBM Verify qui permet à un utilisateur de s'authentifier auprès d'une application en scannant un QR Code à l'aide d'un authentificateur préenregistré (par exemple l'application mobile IBM Verify ).

2524

Authentification sans mot de passe à l'aide d'un code QR avec l'application

La connexion par code QR peut être utilisée comme mécanisme d'authentification de premier facteur, car il n'est pas nécessaire de connaître l'identité de l'utilisateur pour générer le défi d'authentification.

720

QR Code Login flow

Authentificateur enregistré

Pour pouvoir utiliser la méthode d'authentification par code QR, l'utilisateur doit avoir préalablement enregistré une application d'authentification (telle que l'application mobile IBM Verify ) sur son compte. Lors de l'enregistrement, un flux d'octroi OAuth est effectué, ce qui permet à l'application d'authentification de s'authentifier en tant qu'utilisateur et de valider les transactions de connexion par code QR en son nom. L'application d'authentification reçoit un jeton de rafraîchissement qui lui confère une autorité de longue durée pour effectuer cette tâche.

L'application lance l'authentification

Lorsqu'une application lance une connexion par code QR, IBM Verify génère une nouvelle transaction par code QR et renvoie la réponse JSON suivante :

{
    "id": "8ff25527-8083-4cd4-8bcc-775400b7ac9c",
    "type": "qr",
    "created": "2021-01-15T15:01:07.924Z",
    "updated": "2021-01-15T15:01:07.924Z",
    "expiry": "2021-01-15T15:03:07.924Z",
    "state": "PENDING",
    "location": "https://tenant.verify.ibm.com/v2.0/factors/qr/8ff25527-8083-4cd4-8bcc-775400b7ac9c",
    "profileId": "f4bc8b91-8061-49bf-9c69-46ffcb0b3d7b",
    "serviceName": "IBM Verify",
    "tenant": "tenant.verify.ibm.com",
    "lsi": "eopiqrozdvggcuu7p7c5i6cgfzxr5r",
    "dsi": "sbwdqgx86e7uyf8tnbgi9t4ltgokwh",
    "qrCode": "iVBORw0KGgoAAAANSUh....YII="
}

L'application doit afficher un code QR contenant les attributs suivants (ci-dessus) afin qu'il puisse être scanné par l'authentificateur enregistré :

  • emplacement
  • lsi (local session index)
  • seviceName
  • expiration

Pour faciliter la tâche de l'application, l'attribut qrCode contient un code QR prêt à l'emploi base64-encoded image avec ces données.

1033

QR Code Login on IBM Verify login page

Sondages sur l'application à compléter

Une fois que l'application a affiché le code QR, elle doit interroger à intervalles réguliers (toutes les 3 à 5 secondes par exemple) pour déterminer si la transaction du code QR a été associée à un utilisateur. Il fait un appel à l'API REST de Verify où il identifie la transaction et transmet l'identifiant de session de l'appareil ( dsi ) de la réponse d'initiation.

La réponse de IBM Verify a le format suivant :

{
    "id": "8ff25527-8083-4cd4-8bcc-775400b7ac9c",
    "type": "qr",
    "created": "2021-01-15T15:01:07.924Z",
    "updated": "2021-01-15T15:01:07.924Z",
    "expiry": "2021-01-15T15:03:07.924Z",
    "state": "PENDING",
    "location": "https://tenant.verify.ibm.com/v2.0/factors/qr/8ff25527-8083-4cd4-8bcc-775400b7ac9c",
    "profileId": "f4bc8b91-8061-49bf-9c69-46ffcb0b3d7b",
    "serviceName": "IBM Verify",
    "tenant": "tenant.verify.ibm.com"
}

Dans ce cas, la session n'a pas encore été validée et la transaction est donc en attente.

📘

L'interrogation dans une application web

Lorsqu'on travaille avec une application web, il est habituel de contrôler l'interrogation décrite ici à l'aide de JavaScript côté client dans la page de connexion. Le navigateur interroge le back-end de l'application, ce qui déclenche une interrogation à l'adresse IBM Verify.

L'authentificateur valide la session

Une fois que l'authentificateur enregistré a scanné le code QR présenté par l'application, il se connecte à IBM Verify (en utilisant la localisation ) et valide la session (identifiée par lsi ) au nom de l'utilisateur qui l'a enregistré.

L'authentificateur enregistré s'authentifie auprès de IBM Verify en présentant un jeton d'accès OAuth. Ce jeton d'accès est obtenu en utilisant le flux de rafraîchissement du jeton.

Lorsque IBM Verify reçoit la demande de validation de session, il dispose des informations suivantes :

  • Index des sessions
  • Utilisateur associé au jeton d'accès présenté

IBM Verify associe l'utilisateur à la transaction par code QR et marque la transaction comme terminée.

L'enquête sur l'application est couronnée de succès

La prochaine fois que l'application demandera à être complétée, après que la transaction ait été marquée comme complète, la réponse aura le format suivant :

{
    "id": "8ff25527-8083-4cd4-8bcc-775400b7ac9c",
    "userId": "642000EPOU",
    "type": "qr",
    "created": "2021-01-15T15:01:07.924Z",
    "updated": "2021-01-15T15:01:57.145Z",
    "expiry": "2021-01-15T15:03:07.924Z",
    "state": "SUCCESS",
    "updatedBy": "642000EPOU",
    "location": "https://tenant.verify.ibm.com/v2.0/factors/qr/8ff25527-8083-4cd4-8bcc-775400b7ac9c",
    "profileId": "f4bc8b91-8061-49bf-9c69-46ffcb0b3d7b",
    "serviceName": "IBM Verify",
    "tenant": "tenant.verify.ibm.com"
}

Dans cette réponse, le statut est SUCCESS et l'identifiant de l'utilisateur authentifié est renvoyé. Il s'agit de l'identifiant interne de l'utilisateur dans le Cloud Directory. Un appel à l'interface SCIM est nécessaire pour lire les données utilisateur associées à cet utilisateur.

jon Harry, IBM Sécurité


What’s Next

Essayez d'exécuter vous-même le flux de connexion du code QR.