🇫🇷 Français | 🇬🇧 English
Explain how to validate the tokens returned by L’Identité Numérique La Poste.
👉 Token validation is mandatory to guarantee authentication security.
The main returned tokens are:
| Token | Usage |
|---|---|
| id_token | Proof of authentication |
| access_token | API access |
⚠️ The `id_token` must always be validated.
The partner must verify the following elements:
| Check | Description |
|---|---|
| Signature | Verify that the token was signed by LINLP |
| iss | Verify the expected issuer |
| aud | Verify that the token is intended for your client |
| exp | Verify that the token has not expired |
| iat | Verify time consistency |
| nonce | Verify if used during the flow |
LINLP publishes its public keys through the endpoint:
/auth/realms/partenaire/protocol/openid-connect/certs
👉 Standard format: JWKS
The partner must:
The `iss` field must match the environment in use.
Example:
| Environment | Expected Value |
|---|---|
| Sandbox | https://authent.pprod.lidentitenumerique.laposte.fr |
| Production | https://authent.lidentitenumerique.laposte.fr |
The `aud` field must match your:
client_id
👉 Otherwise, the token must be rejected.
The field:
exp
represents the token expiration time.
⚠️ An expired token must not be accepted.
If a `nonce` was sent during `/authorize`:
👉 The same `nonce` must be present in the token.
This protects against certain replay attacks.
{
"iss": "https://authent.lidentitenumerique.laposte.fr",
"aud": "client_abc",
"sub": "5577832670193",
"exp": 1712345678,
"iat": 1712342078
}
⚠️ The `id_token` may be retained as historical proof of authentication.
👉 Its expiration concerns real-time usage, not its evidentiary value.
The `access_token` is used to call:
/userinfo
👉 The partner must treat it as a temporary secret.
👉 Frequently asked questions: