LDAP Data source
Projet : Avenirs-ESR / ePortfolio.
Objet : Alimentation depuis un annuaire LDAP au format Supann.
Révision : 1.0.0
Date : 15/01/2026
Auteur : A. Deman
Commentaire : Version initiale
Contexte
- L’objectif est d’étudier l’alimentation, pour les étudiants dans un premier temps, a partir d’un annuaire proche de ceux des établissements.
- La plupart des établissements respectent intégralement ou partiellement le format Supann.
- Un export au format json est réalisé à partir d’un annuaire LDAP puis traité pour être intégré dans le système.
Jeux de données : export JSON de 4000 entrées.
Remarques
- Aucune garantie du respect de la norme Supann dans les établissements.
- Possibilité de mélange de plusieurs versions de la norme avec la présence d’attributs obsolètes.
- Certains formats sont étiquetés et pourraient potentiellement être enrichis via des API open data.
- Concernant l’INE, il est possible que la lettre à la fin (Clé) soit omise ainsi que les 0 de préfixe, ce qui rend difficile son utilisation.
Attributs
| LDAP | Multivalué | JSON | Base de données bd.schema.table.colone |
Définition | Exemple de valeur | Remarques |
|---|---|---|---|---|---|---|
| uid | Multivalué, mais mono-valuation demandée dans le cadre de SupAnn | externalId | UID, Identifiant de connexion d’une personnes sur les systèmes informatiques | akamo | Pourrait être utilisé pour external_id (à la place d’EduPersonPrincipalName) | |
| cn | Oui, mais ne devrait contenir qu’une valeur | CommonName, Nom complet sans accent d’une personne, identifiant d’un groupe | ALLAN AKAMO | |||
| givenName | Oui, mais ne devrait contenir qu’une valeur | firstName | avenirs_api.dev.external_user.first_name | GivenName, Prénom d’usage d’une personne | ALLAN | La création d’un external_user doit déclencher la création d’un enregistrement dans les tables user et student |
| displayName | Non | displayName | DisplayName, Nom complet d’affichage (peut contenir des accents) | AKAMO ALLAN | ||
| Multivalué, mais mono-valuation demandée dans le cadre de SupAnn | avenirs_api.dev.external_user.email | akamo@etab.fr | ||||
| eduPersonPrimaryAffiliation | Non | avenirs_api.dev.external_user.category | EduPersonPrimaryAffiliation,Statut principal de la personne vis-à-vis de l’établissement | student | ||
| sn | Oui, mais ne devrait contenir qu’une valeur | lastName | avenirs_api.dev.external_user.last_name | Surname,Nom d’usage de la personne (nom de famille) | AKAMO | |
| supannEtablissement | Oui | structure | Refactoring nécessaire pour intégrer UAI: avenirs_api.dev.institution |
SupannEtablissement,Code d’un établissement (UAI) | 0123456G | |
| supannCivilite | Non | civility | SupannCivilite,Civilité | 2 valeurs possibles: M. ou Mme | ||
| supannOIDCDateDeNaissance | Non | birthDate | SupannOIDCDateDeNaissance,Date de naissance au format AAAA-MM-JJ | 1999-11-01 | ||
| supannEntiteAffectationPrincipale | Non | affectationPrincipale | SupannEntiteAffectationPrincipale, Identifiant de l’entité principale d’affectation | ED548 | Le code est interne à l’établissement mais s’il est renseigné, doit correspondre à un code existant dans la branche structure | |
| supannEntiteAffectation | Oui | affectations | SupannEntiteAffectation, Identifiant de l’entité d’affectation | ED548 | Multivalué, peut contenir d’autres codes en plus de celui de l’affectaion principale (Ce sont des codes de structure) | |
| eduPersonPrincipalName | Non | eppn | avenirs_api.dev.external_user.external_id | EPPN, Identifiant globalement unique pour une personne, composé de deux parties séparées par un “@”: celle de gauche identifie la personne au sein d’un établissement, et celle de droite identifie cet établissement | akamo@etab.fr | L’external_id pourrait également être valué via l’uid |
| supannEtuSecteurDisciplinaire | Oui | SupannEtuSecteurDisciplinaire, secteur disciplinaire d’un diplôme ou d’une formation | {SISE}0041 | Donnée étiquetée. Si l’étiquette est {SISE} voir si elle peut être enrichie via API open data. | ||
| supannEtuDiplome | Oui | degree | SupannEtuDiplome,Diplôme préparé par l’étudiant | {UAI:0123456G}T3GEA-841 | Format étiqueté, dans l’exemple il s’agit d’un code local | |
| supannEtuTypeDiplome | Oui | degreeType | SupannEtuTypeDiplome,type ou catégorie du diplôme préparé | {SISE}DR | Format étiqueté | |
| supannEtuEtape | Oui | step | SupannEtuEtape,Code identifiant une étape d’enseignement | {UAI:0123456G}PIFCRO-100 | Format étiqueté | |
| supannAffectation | Oui | audience | Attribut obsolète, remplacé par supannEntiteAffectation | |||
| supannEtuCursusAnnee | Oui | cursusYear | SupannEtuCursusAnnee, type de cursus (L, M, D ou X, …) ainsi que l’année dans le diplôme | {SUPANN}X2 | Valeurs normalisées si étiquette SUPANN. Voir la définition de l’attribut pour les valeurs possibles | |
| supannNomDeNaissance | Non | SupannNomDeNaissance, Nom de famille de naissance de la personne | AKAMO | |||
| eduPersonAffiliation | Oui | EduPersonAffiliation, Statut principal de la personne vis-à-vis de l’établissement | student | Cet attribut PEUT suivre la nomenclature précisée dans la définition de l’attribut | ||
| supannCodeINE | Multivalué mais ne devrait contenir qu’une valeur | INE | SupannCodeINE, Code INE d’un étudiant | 0000003957B | Valeur non obligatoire. La clé peut ne pas être présente ainsi que les ‘0’ en préfixe. |
Exemple de LDIF
dn: uid=agyepong,ou=people,dc=ldap-dev,dc=avenirs-esr,dc=fr
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: supannPerson
objectClass: eduPerson
objectClass: eduMember
uid: agyepong
userPassword: {ssha}Ke8lVwbkuJcEbWdCur8XLG9QwggNciz6UlwH/w==
cn: GIANNI AGYEPONG
givenName: GIANNI
displayName: AGYEPONG GIANNI
supannEtuId: 10007474
mail: agyepong@etab.fr
eduPersonPrimaryAffiliation: student
sn: AGYEPONG
supannEtablissement: {UAI}0123456G
supannCivilite: M.
supannOIDCDateDeNaissance: 2003-09-23
supannEntiteAffectation: 909
supannEntiteAffectationPrincipale: 909
eduPersonPrincipalName: agyepong@etab.fr
supannEtuSecteurDisciplinaire: {SISE}0067
supannEtuDiplome: {UAI:0123456G}T3TCO-841
supannEtuTypeDiplome: {SISE}DR
supannEtuEtape: {UAI:0123456G}T3PAD3-100
supannAffectation: L2 STAPS ES parcours LAS
supannEtuCursusAnnee: {SUPANN}L3
supannNomDeNaissance: AGYEPONG
eduPersonAffiliation: student
supannCodeINE: 0000000001B
Exemple de JSON
{
"externalId": "agyepong",
"eppn": "agyepong@avenirs-esr.fr",
"civility": "M.",
"firstName": "GIANNI",
"lastName": "AGYEPONG",
"displayName": "AGYEPONG GIANNI",
"audience": "student",
"INE": "0000000001B",
"mail": "agyepong@etab.fr",
"structure": "{UAI}0123456G",
"cursusYear": "{SUPANN}X2",
"degree": "{UAI:0123456G}T3TCO-841",
"degreeType": "{SISE}DR",
"affectations": [
"909"
],
"affectationPrincipale": "909",
"step": "{UAI:0123456G}T3PAD3-100",
"birthDate": "2003-09-23"
}