Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| donnees:scopes_et_claims [2026/04/06 23:54] – mkessabi | donnees:scopes_et_claims [2026/04/07 00:29] (Version actuelle) – mkessabi | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Scopes et claims ====== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Les données retournées par L’Identité Numérique La Poste sont définies via les **scopes OpenID Connect**. | ||
| + | |||
| + | 👉 Un scope correspond à un ensemble de données (claims) que le partenaire demande lors de l’authentification. | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Principe ===== | ||
| + | |||
| + | Lors de l’appel `/ | ||
| + | |||
| + | < | ||
| + | scope=openid+profile+email+phone | ||
| + | </ | ||
| + | |||
| + | 👉 LINLP retourne la donnée uniquement si les 3 conditions sont respectées : | ||
| + | * la donnée est demandée ou préconfigurée par défaut | ||
| + | * la donnée est autorisée dans le paramétrage LINLP | ||
| + | * la donnée est consentie par l’utilisateur | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Notions clés ===== | ||
| + | |||
| + | ^ Terme ^ Description ^ | ||
| + | | Scope | Groupe de données | | ||
| + | | Claim | Donnée individuelle | | ||
| + | | id_token | Contient des claims | | ||
| + | | /userinfo | Retourne des claims | | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== ⚠️ Donnée non vérifiée : nom d’usage ===== | ||
| + | |||
| + | ⚠️ **Le champ `preferred_username` (nom d’usage) n’est pas une donnée vérifiée par LINLP.** | ||
| + | |||
| + | * Cette donnée est **saisie librement par l’utilisateur** | ||
| + | * Elle **n’est pas contrôlée** lors de la vérification d’identité | ||
| + | * Elle est **souvent absente ou non à jour** sur les pièces d’identité | ||
| + | |||
| + | 👉 En conséquence : | ||
| + | * elle **ne doit pas être utilisée comme donnée d’identité de référence** | ||
| + | * elle doit être considérée comme **indicative uniquement** | ||
| + | |||
| + | ----- | ||
| + | |||
| ===== Scopes disponibles ===== | ===== Scopes disponibles ===== | ||
| ===== Scope openid ===== | ===== Scope openid ===== | ||
| - | ^ Claim ^ Description ^ Format ^ | + | ^ Claim ^ Description ^ Format |
| - | | sub | Identifiant unique utilisateur | UUID | | + | | sub | Identifiant unique utilisateur | UUID | 075ccece-6699-4c08-80ca-27a6af136b68 |
| ----- | ----- | ||
| Ligne 10: | Ligne 59: | ||
| ===== Scope profile ===== | ===== Scope profile ===== | ||
| - | ^ Claim ^ Description ^ Format ^ | + | ^ Claim ^ Description ^ Format |
| - | | given_name | Prénoms | String | | + | | given_name | Prénoms | String |
| - | | family_name | Nom de naissance | String | | + | | family_name | Nom de naissance | String |
| - | | preferred_username | Nom d’usage | String | | + | | preferred_username | Nom d’usage |
| - | | gender | Sexe (Male / Female) | String | | + | | gender | Sexe (Male / Female) | String |
| ----- | ----- | ||
| Ligne 20: | Ligne 69: | ||
| ===== Scope birth ===== | ===== Scope birth ===== | ||
| - | ^ Claim ^ Description ^ Format ^ | + | ^ Claim ^ Description ^ Format |
| - | | birthdate | Date de naissance | YYYY-MM-DD | | + | | birthdate | Date de naissance | YYYY-MM-DD |
| - | | birthplace | Code INSEE commune | String (5) | | + | | birthplace | Code INSEE commune | String (5) | 75109 | |
| - | | birthdepartment | Département | String | | + | | birthdepartment | Département | String |
| - | | birthcountry | Pays de naissance | String (5) | | + | | birthcountry | Pays de naissance | String (5) | 99100 | |
| ----- | ----- | ||
| Ligne 30: | Ligne 79: | ||
| ===== Scope email ===== | ===== Scope email ===== | ||
| - | ^ Claim ^ Description ^ Format ^ | + | ^ Claim ^ Description ^ Format |
| - | | email | Adresse email | email | | + | | email | Adresse email | email | jean.dupont@mail.com |
| - | | email_verified | Email vérifié | boolean | | + | | email_verified | Email vérifié | boolean |
| ----- | ----- | ||
| Ligne 38: | Ligne 87: | ||
| ===== Scope phone ===== | ===== Scope phone ===== | ||
| - | ^ Claim ^ Description ^ Format ^ | + | ^ Claim ^ Description ^ Format |
| - | | phone_number | Numéro de téléphone | +33XXXXXXXXX | | + | | phone_number | Numéro de téléphone | +33XXXXXXXXX |
| - | | phone_number_verified | Téléphone vérifié | boolean | | + | | phone_number_verified | Téléphone vérifié | boolean |
| ----- | ----- | ||
| Ligne 46: | Ligne 95: | ||
| ===== Scope nationality ===== | ===== Scope nationality ===== | ||
| - | ^ Claim ^ Description ^ Format ^ | + | ^ Claim ^ Description ^ Format |
| - | | nationality | Nationalité | JSON {code, label} | | + | | nationality | Nationalité | JSON {code, label} |
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Scope digital_identity_metadata ===== | ||
| + | |||
| + | ^ Claim ^ Description ^ Format ^ Exemple ^ | ||
| + | | digital_identity_creation_date | Date de création identité | datetime | 2025-01-17T08: | ||
| + | | digital_identity_expiration_date | Date d’expiration | datetime | 2030-01-17T08: | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Scope identity_document_metadata ===== | ||
| + | |||
| + | ^ Claim ^ Description ^ Format ^ Exemple ^ | ||
| + | | identity_document_mrz | Bande MRZ de la pièce d' | ||
| + | | identity_document_type | Type de pièce | String | ID_CARD | | ||
| + | | identity_document_expiration_date | Date d' | ||
| + | | identity_document_emitting_country | Pays d' | ||
| + | | identity_document_emitting_date | Date d' | ||
| ----- | ----- | ||
| Ligne 55: | Ligne 123: | ||
| Certaines données peuvent être retournées en complément des scopes : | Certaines données peuvent être retournées en complément des scopes : | ||
| - | ^ Claim ^ Description ^ Format ^ | + | ^ Claim ^ Description ^ Format |
| - | | ccu_id | Identifiant interne La Poste | String (13) | | + | | ccu_id | Identifiant interne La Poste | String (13) | 5572916534921 |
| - | | birthplacelabel | Libellé de la commune | String | | + | | splitted_given_name | Prénoms séparés | JSON | {" |
| - | | birthcountrylabel | Libellé du pays | String | | + | | majority | Statut majeur | boolean | true | |
| - | | birthcountry_iso | Pays (format ISO) | JSON | | + | |
| - | | splitted_given_name | Prénoms séparés | JSON | | + | |
| - | | majority | Statut majeur | boolean | | + | |
| - | | digital_identity_creation_date | Date de création identité | datetime | | + | |
| - | | digital_identity_expiration_date | Date d’expiration | datetime | + | |
| ----- | ----- | ||
| Ligne 97: | Ligne 160: | ||
| < | < | ||
| " | " | ||
| - | " | + | " |
| - | " | + | " |
| } | } | ||
| </ | </ | ||
| Ligne 104: | Ligne 167: | ||
| ----- | ----- | ||
| - | ===== Recommandation par cas d’usage | + | ===== Exemple de réponse (/ |
| - | ^ Cas d’usage | + | < |
| - | | Authentification simple | openid email | | + | { |
| - | | Création de compte | openid profile email | | + | " |
| - | | Vérification | + | " |
| - | | Sécurité renforcée | openid phone | | + | " |
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Bonnes pratiques ===== | ||
| + | |||
| + | ⚠️ Demander uniquement les données nécessaires | ||
| + | Respect du principe de minimisation. | ||
| + | |||
| + | ⚠️ Ne pas utiliser le nom d’usage | ||
| + | Utiliser `family_name` comme référence. | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Points | ||
| + | |||
| + | ⚠️ Les scopes doivent être validés en amont | ||
| + | Impossible de demander un scope non autorisé. | ||
| + | |||
| + | ⚠️ Les formats sont normalisés | ||
| + | Respecter les formats | ||
| ----- | ----- | ||
| Ligne 117: | Ligne 206: | ||
| 💡 Toutes les données : | 💡 Toutes les données : | ||
| - | * sont certifiées par LINLP | ||
| * sont transmises uniquement après consentement utilisateur | * sont transmises uniquement après consentement utilisateur | ||
| * peuvent évoluer selon le paramétrage du partenaire | * peuvent évoluer selon le paramétrage du partenaire | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Résumé ===== | ||
| + | |||
| + | * Les données sont pilotées par les scopes | ||
| + | * Les claims sont les données individuelles | ||
| + | * Les données sont retournées aux formats JWT et JSON | ||
| + | * Le nom d’usage est une donnée déclarative non vérifiée | ||
| + | |||
| + | ----- | ||
| + | |||
| + | ===== Étape suivante ===== | ||
| + | |||
| + | 👉 Comprendre les tokens : | ||
| + | |||
| + | [[donnees: | ||