Le flow CIBA permet de déclencher une authentification utilisateur sans redirection vers la mire d'authentification LINLP.
👉 Il est utilisé pour :
Contrairement au flow classique :
👉 Le serveur déclenche une demande → l’utilisateur valide sur son téléphone.
⚠️ Ce flow nécessite de connaître l’utilisateur :
👉 Cet identifiant est généralement obtenu lors d’un premier login via Authorization Code.
Appel backend :
POST /ext/ciba/auth
Paramètres :
Exemple :
grant_type=client_credentials client_id=XXX client_secret=XXX scope=openid login_hint=LIN|user_id
Réponse :
{
"auth_req_id": "ABC123",
"expires_in": 900,
"interval": 5
}
L’utilisateur reçoit une notification sur son smartphone :
Le backend interroge LINLP :
POST /token
Paramètres :
👉 Cette requête est répétée jusqu’à validation.
Une fois validé :
Le flow CIBA est adapté pour :
Exemples :
| Cas | Description |
|---|---|
| Utilisateur non reconnu | erreur login_hint |
| Demande expirée | auth_req_id invalide |
| Refus utilisateur | pas de token retourné |
| Mauvais client_secret | erreur authentication |
⚠️ Toujours gérer le polling Respecter le champ `interval` pour éviter la surcharge.
⚠️ Gérer les expirations `auth_req_id` expire rapidement.
⚠️ UX utilisateur Informer l’utilisateur qu’une validation est attendue sur mobile.
⚠️ Sécurité Ne jamais exposer client_secret.
| Critère | Authorization Code | CIBA |
|---|---|---|
| Redirection utilisateur | Oui | Non |
| Initié par | Frontend | Backend |
| Connaissance utilisateur | Non obligatoire | Obligatoire |
| Cas d’usage | Validation forte | Validation forte |
⚠️ Flow nécessitant de connaitre l'utilisateur À utiliser uniquement si l'id utilisateur est connu par le service.
⚠️ Gestion du temps réel Prévoir timeout et retry côté backend.
👉 Comprendre les données retournées :