Documentation du code de SPIP et de ses plugins

SPIP

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>|bool

auth_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>

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
string

auth_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


        
On this page

Search results