Table des matières

Flow CIBA (Client Initiated Backchannel Authentication)

Objectif

Le flow CIBA permet de déclencher une authentification utilisateur sans redirection vers la mire d'authentification LINLP.

👉 Il est utilisé pour :


Principe

Contrairement au flow classique :

👉 Le serveur déclenche une demande → l’utilisateur valide sur son téléphone.


Prérequis

⚠️ Ce flow nécessite de connaître l’utilisateur :

👉 Cet identifiant est généralement obtenu lors d’un premier login via Authorization Code.


Étape 1 : déclenchement de la demande

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
}

Étape 2 : validation utilisateur

L’utilisateur reçoit une notification sur son smartphone :


Étape 3 : récupération des tokens

Le backend interroge LINLP :

POST /token

Paramètres :

👉 Cette requête est répétée jusqu’à validation.


Étape 4 : récupération des données

Une fois validé :


Cas d’usage

Le flow CIBA est adapté pour :

Exemples :


Cas d’erreur

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

Bonnes pratiques

⚠️ 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.


Différences avec Authorization Code

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

Points d’attention

⚠️ 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.


Résumé


Étape suivante

👉 Comprendre les données retournées :

Scopes et claims