Table des matières

Flow Authorization Code

Objectif

Le flow Authorization Code est le mode d’intégration principal de L’Identité Numérique La Poste.

Il permet :


Principe

Le flow repose sur un échange en plusieurs étapes :

  1. Redirection utilisateur vers LINLP
  2. Authentification (mobile)
  3. Retour avec un code temporaire
  4. Échange du code contre des tokens
  5. Récupération des données utilisateur

👉 Ce flow est conforme au standard OpenID Connect.


Étape 1 : appel /authorize

Le partenaire redirige l’utilisateur vers LINLP.

GET /authorize

Paramètres principaux :

Exemple :

https://authent.pprod.lidentitenumerique.laposte.fr/auth/realms/partenaire/protocol/openid-connect/auth
?client_id=XXX
&response_type=code
&redirect_uri=https://monservice.fr/callback
&scope=openid+profile+email
&state=abc123
&nonce=xyz456

💡 `login_hint` permet de pré-remplir le téléphone utilisateur.


Étape 2 : authentification utilisateur

L’utilisateur :

👉 Le consentement des données est demandé si nécessaire.


Étape 3 : redirection avec code

Après succès :

https://monservice.fr/callback?code=ABC123&state=abc123

⚠️ Le code :


Étape 4 : échange du code (/token)

Le backend appelle :

POST /token

Exemple :

grant_type=authorization_code
code=ABC123
redirect_uri=https://monservice.fr/callback

👉 Authentification requise via :


Étape 5 : récupération des tokens

Réponse :


Étape 6 : récupération des données (/userinfo)

GET /userinfo
Authorization: Bearer access_token

👉 Retour :


🔐 Recommandation critique

⚠️ Le partenaire doit impérativement stocker le id_token

👉 Pourquoi ?

👉 Cas d’usage :

💡 Contrairement à l’access_token, le id_token doit être conservé côté partenaire


Cas d’erreur

Erreurs côté /authorize

Cas Comportement
Scope invalide Redirection avec error=invalid_scope
client_id incorrect Erreur 400
redirect_uri incorrect Erreur 400

Erreurs côté utilisateur

Cas Comportement
Refus utilisateur Retour page login
Timeout validation Retour page login
Utilisateur inconnu Timeout

Erreurs côté /token

Cas Description
Code invalide invalid_grant
Code expiré invalid_grant
Mauvais client_secret unauthorized_client

Erreurs côté /userinfo

Cas Description
Token invalide invalid_token
Token expiré accès refusé

Bonnes pratiques

⚠️ Toujours utiliser un backend

⚠️ Vérifier le paramètre state

⚠️ Vérifier le nonce

⚠️ Vérifier la signature du id_token

⚠️ Gérer les expirations

⚠️ Journaliser les erreurs


Points d’attention

⚠️ redirect_uri doit être strictement identique

⚠️ Les scopes doivent être déclarés en amont

⚠️ Le flow est synchrone côté utilisateur

⚠️ Les données retournées dépendent :


Résumé


Étape suivante

👉 Pour des cas avancés :

Flow CIBA