Connexion via un code Quick Response
Introduction
La connexion par code QR est un mécanisme d'authentification propre à IBM Security Verify qui permet à un utilisateur de s'authentifier auprès d'une application en scannant un code QR à l'aide d'un authentificateur préenregistré (par exemple l'application mobile IBM Verify).

Authentification sans mot de passe à l'aide d'un code QR avec l'application IBM Verify
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.

Flux de connexion par code QR
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 Security 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é :
- location
- lsi (local session index)
- serviceName
- expiry
Pour faciliter la tâche de l'application, l'attribut qrCode contient une image de code QR prêt à l'emploi encodée en base64 avec ces données.

Connexion par code QR sur la page de connexion IBM Security Verify
L'application interroge pour l'achèvement
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. Elle fait un appel à l'API REST de Verify où elle identifie la transaction et transmet le dsi (identifiant de session de l'appareil) de la réponse d'initiation.
La réponse d'IBM Security 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 état PENDING.
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 à IBM Security 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 Security Verify (en utilisant location) et valide la session (identifiée par lsi) au nom de l'utilisateur qui l'a enregistré.
L'authentificateur enregistré s'authentifie auprès d'IBM Security Verify en présentant un jeton d'accès OAuth. Ce jeton d'accès est obtenu en utilisant le flux de jeton de rafraîchissement.
Lorsqu'IBM Security Verify reçoit la demande de validation de session, il dispose des informations suivantes :
- Index de session
- Utilisateur associé au jeton d'accès présenté
IBM Security Verify associe l'utilisateur à la transaction par code QR et marque la transaction comme terminée.
L'interrogation de l'application retourne le succès
La prochaine fois que l'application interroge pour l'achèvement, après que la transaction ait été marquée comme terminée, 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é. Notez qu'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 Security
Updated 21 days ago
Essayez d'exécuter vous-même le flux de connexion du code QR.