Connexion par QR
La connexion par QR permet à un navigateur de se connecter en scannant un QR
code avec l’app Bloonio Authenticator. Le tenant agit comme courtier : il
initie une session (signé HMAC #1), affiche le QR à l’utilisateur, puis
interroge le relais jusqu’à approbation. Les deux routes sont des relais vers
auth_api, qui mint le QR et décide de l’issue.
Vue d’ensemble
Section intitulée « Vue d’ensemble »- Le navigateur demande une connexion ; votre backend appelle
POST /relay/qr-login/initiateavec l’origine du navigateur. - Le relais vérifie que l’origine est dans l’allowlist du tenant, puis renvoie
session_id,poll_tokenet la charge du QR. - Le front-end affiche le QR. L’utilisateur le scanne et approuve dans l’app.
- Le navigateur interroge
GET /relay/qr-login/polljusqu’à un état approuvé ou un410 GONE.
Initier une session
Section intitulée « Initier une session »browser_origin doit appartenir à qr_login_allowed_origins du tenant. Une
allowlist vide désactive la connexion par QR pour ce tenant.
curl $BASE_URL/api/v1/relay/qr-login/initiate \ -X POST \ -H "X-Bloonio-Tenant-Id: tnt_..." \ -H "X-Bloonio-Timestamp: 1718966400000" \ -H "X-Bloonio-Signature: <hex_hmac_sha256>" \ -H "Content-Type: application/json" \ -d '{ "browser_origin": "https://example.com" }'{ "success": true, "status_code": 200, "message": "QR-login session created.", "data": { "session_id": "...", "poll_token": "...", "qr_payload": "...", "qr_code_str": "...", "signature": "...", "expires": "2026-06-21T..." }}Interroger la session
Section intitulée « Interroger la session »L’interrogation est un pass-through : transmettez la requête de poll de
l’utilisateur avec l’en-tête X-QR-Poll-Token. Le relais reflète le code de
statut d’auth_api.
curl "$BASE_URL/api/v1/relay/qr-login/poll?session_id=..." \ -H "X-Bloonio-Tenant-Id: tnt_..." \ -H "X-Bloonio-Timestamp: 1718966400000" \ -H "X-Bloonio-Signature: <hex_hmac_sha256>" \ -H "X-QR-Poll-Token: ..."session_id fait de 10 à 64 caractères.
Sémantique des codes de statut
Section intitulée « Sémantique des codes de statut »| Code | Signification |
|---|---|
200 | En attente ou approuvé — le bloc data reflète l’état renvoyé par auth_api. |
410 GONE | Le QR a expiré, a été consommé, ou le poll-token est absent / invalide. |
502 | auth_api en amont injoignable. |