Tous les endpoints renvoient du JSON.
Avant tout traitement métier:
- filtrage IP via
Security.AllowedIps, - contrôle du secret
X-Internal-Auth(siInternalSharedSecretest configuré), - contrôle de contexte applicatif via
X-App-Context(siRequireAppContextHeader=true).
Le endpoint /health reste exempté du contexte applicatif, mais toujours filtré par IP.
Exemples de contextes utilisés par le client PHP:
intranet-login: login (/auth),self-service: endpoints utilisateur standard,admin-user: administration utilisateurs,admin-domain: administration domaine/explorer,forgot-reset: flux mot de passe oublié.
Un contexte incohérent peut produire 403.
- Vérifie le bind LDAP.
200si OK,500sinon.
- Retourne notamment
baseDn,groupBaseDn,rootDn.
Body:
{
"username": "jdupont",
"password": "MotDePasse"
}Retourne success, user, mustChangePassword, isAdmin.
- Lecture des informations d'un utilisateur.
Body:
{
"dn": "CN=Jean Dupont,OU=Infra,DC=example,DC=local",
"modifications": {
"mail": "jean.dupont@example.local",
"telephoneNumber": "+33102030405"
}
}Body:
{
"username": "jdupont",
"currentPassword": "Ancien",
"newPassword": "Nouveau"
}- Endpoint dédié au lookup contrôlé du flux reset.
- Réponse:
{"found": false}si aucun compte,- ou
{"found": true, "sam": "...", "givenName": "...", ...}.
Query:
includeBuiltins=true|false,groups=none|direct|effective,page,pageSize(si pagination activée).
Query:
baseDn(optionnel),search(optionnel),page,pageSize.
Query:
baseDn(optionnel),depth(1-10),includeLeaves=true|false,maxChildren(max 2000).
- Recherche multi-types sous l'explorer base.
- Recherche de groupes.
scope:all=> sousRootDn,groups=> sousGroupBaseDn,explorer=> sousBaseDn.
- Recherche utilisateurs.
- Groupes directs d'un utilisateur.
Body:
{
"user": "jdupont",
"groups": [
"CN=ADSyncAdmins,CN=Users,DC=example,DC=local",
"CN=IT,OU=Groups,DC=example,DC=local"
]
}- Membres directs d'un groupe.
Body:
{
"group": "CN=IT,OU=Groups,DC=example,DC=local",
"members": [
"CN=Jean Dupont,OU=Infra,DC=example,DC=local"
]
}- Détails d'un objet AD.
- Enfants directs d'un objet AD.
Ces endpoints attendent des payloads JSON explicites (user, dn, attributes, etc.) selon l'action.
deleteGroup accepte un body contenant dn ou group.
Règles principales:
- périmètre limité sous
BaseDn, - protections OU respectées,
- suppression OU refusée si non vide.
Ces endpoints ne font plus partie du contrat actif:
/admin/addToGroup/admin/removeFromGroup/explorer/groupMembers
200: succès,400: payload invalide / contrainte LDAP,401: authentification invalide,403: non autorisé (IP, secret, contexte, périmètre),404: ressource introuvable,409: conflit (ex. OU non vide),500: erreur serveur/bind LDAP.