ldap.php
Gestion de l'authentification par LDAP
Table of Contents
Functions
- auth_ldap_dist() : array<string|int, mixed>|bool
- Fonction principale d'authentification du module auth/ldap
- auth_ldap_connect() : array<string|int, mixed>
- Connexion à l'annuaire LDAP
- auth_ldap_search() : string
- Retrouver un login, et vérifier son pass si demandé par `$checkpass`
- auth_ldap_retrouver() : array<string|int, mixed>
- Retrouver un DN depuis LDAP
- auth_ldap_retrouver_login() : string
- Retrouver le login de quelqu'un qui cherche à se loger
- auth_ldap_verifier_pass() : string
- Vérification de la validité d'un mot de passe pour le mode d'auth concerné
- auth_ldap_autoriser_modifier_pass() : bool
- Informer du droit de modifier ou non le pass
- auth_ldap_modifier_pass() : bool
- Fonction de modification du mot de passe
Functions
auth_ldap_dist()
Fonction principale d'authentification du module auth/ldap
auth_ldap_dist(string $login, string $pass[, string $serveur = '' ][, bool $phpauth = false ]) : array<string|int, mixed>|bool
- On se bind avec le compte generique defini dans config/ldap.php,
- On determine le DN de l'utilisateur candidat a l'authentification,
- On se re-bind avec ce DN et le mot de passe propose.
Si la connexion est autorisee, on renvoie pour enregistrement en session, en plus des champs SQL habituels, les informations de connexion de l'utilisateur (DN et password). Cela permettra de se binder en cours de session sous son identite specifique pour les operations necessitant des privileges particuliers. TODO: Gerer une constante de conf qui permette de choisir entre ce comportement et tout faire avec le compte generique.
Parameters
- $login : string
- $pass : string
- $serveur : string = ''
- $phpauth : bool = false
Return values
array<string|int, mixed>|boolauth_ldap_connect()
Connexion à l'annuaire LDAP
auth_ldap_connect([string $serveur = '' ]) : array<string|int, mixed>
Il faut passer par spip_connect()
pour avoir les info
donc potentiellement indiquer un serveur
meme si dans les fait cet argument est toujours vide
Parameters
- $serveur : string = ''
Return values
array<string|int, mixed>auth_ldap_search()
Retrouver un login, et vérifier son pass si demandé par `$checkpass`
auth_ldap_search(string $login, string $pass[, bool $checkpass = true ][, string $serveur = '' ]) : string
Parameters
- $login : string
- $pass : string
- $checkpass : bool = true
- $serveur : string = ''
Return values
string —Le login trouvé ou chaine vide si non trouvé
auth_ldap_retrouver()
Retrouver un DN depuis LDAP
auth_ldap_retrouver(string $dn[, array<string|int, mixed> $desc = [] ][, string $serveur = '' ]) : array<string|int, mixed>
Parameters
- $dn : string
- $desc : array<string|int, mixed> = []
- $serveur : string = ''
Return values
array<string|int, mixed>auth_ldap_retrouver_login()
Retrouver le login de quelqu'un qui cherche à se loger
auth_ldap_retrouver_login(string $login[, string $serveur = '' ]) : string
Parameters
- $login : string
- $serveur : string = ''
Return values
stringauth_ldap_verifier_pass()
Vérification de la validité d'un mot de passe pour le mode d'auth concerné
auth_ldap_verifier_pass(string $login, string $new_pass[, int $id_auteur = 0 ][, string $serveur = '' ]) : string
C'est ici que se font éventuellement les vérifications de longueur mini/maxi ou de force.
Parameters
- $login : string
-
Le login de l'auteur : permet de vérifier que pass et login sont différents même à la creation lorsque l'auteur n'existe pas encore
- $new_pass : string
- $id_auteur : int = 0
-
Si auteur existant déjà
- $serveur : string = ''
Return values
string —Message d'erreur si login non valide, chaîne vide sinon
auth_ldap_autoriser_modifier_pass()
Informer du droit de modifier ou non le pass
auth_ldap_autoriser_modifier_pass([string $serveur = '' ]) : bool
On ne peut pas détecter à l'avance si l'autorisation sera donnée, il faudra informer l'utilisateur a posteriori si la modif n'a pas pu se faire.
Parameters
- $serveur : string = ''
Return values
bool —Pour un auteur LDAP, a priori toujours true, à conditiion que le serveur l'autorise: par exemple, pour OpenLDAP il faut avoir dans slapd.conf:
access to attr=userPassword
by self write
...
auth_ldap_modifier_pass()
Fonction de modification du mot de passe
auth_ldap_modifier_pass(string $login, string $new_pass, int $id_auteur[, string $serveur = '' ]) : bool
On se bind au LDAP cette fois sous l'identité de l'utilisateur, car le compte générique defini dans config/ldap.php n'a généralement pas (et ne devrait pas avoir) les droits suffisants pour faire la modification.
Parameters
- $login : string
- $new_pass : string
- $id_auteur : int
- $serveur : string = ''
Return values
bool —Informe du succès ou de l'echec du changement du mot de passe