giovedì 13 aprile 2017

Connessione openldap con PHP

Tramite il linguaggio di programmazione php è possibile collegarsi ad un database utenti che usa il protocollo openldap.
Questo tipo di connessione consente infatti di fare dei semplici controlli per una login d'accesso, nel caso in cui il database utenti sia presente su un db open ldap.

Nell'esempio che andrò a riportare, sarà mostrato come effettuare il controllo, tramite php, del match username e password, in modo da verificare se un utente ha inserito le corrette credenziali d'accesso ad un sito con area riservata.


Come fare la connessione ad openldap con il PHP


Per potersi collegare ad un database openldap tramite php, utilizzare il seguente script:

<?php
$userid=trim($_GET['u']);
$password=trim($_GET['p']);
$ad = ldap_connect('ldap://$SERVER') or die("Errore, impossibile connettersi al server LDAP");
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3) or die("Errore versione LDAP");
ldap_set_option($ad, LDAP_OPT_REFERRALS, 0) or die("Errore riferimenti LDAP");
$bd = ldap_bind($ad, 'uid='.$userid.',ou=people,dc=$NOMESERVER,dc=it', $password) or die("Errore, username o password errate");
?>


Lo script di connessione è molto semplice ed intuitivo, tuttavia vanno fatte alcune doverose precisazioni.

$userid e $password sono ovviamente due variabili php che potete valorizzare come meglio credete (nel mio esempio le passo tramite url a mano), anche tramite la costruzione di una apposita form di login ldap.

Poi c'è la variabile $SERVER, che di solito si valorizza con l'ip della macchina che ospita l'ldap.

Infine, la funzione di verifica credenziali ldap_bind, è composta dalla tipica stringa di connessione ldap, che ovviamente varia a seconda di come è stato strutturato il vostro database ldap.
Dove ad uid (o cn in alcuni casi) si associa la username d'accesso, poi ci potrebbe essere l'ou (nel mio esempio il gruppo people), ed i dc che compongono le varie parti del nome del server (es. nomedominio.it).

Lo script è testato e funzionante, ma se dovesse riportarvi che da errore di user e password, prima di scerverlarvi di verificare 1000 volte le vostre credenziali d'accesso, verificato di aver scritto correttamente i vari dc, perchè basta la minima imprecisione ed il tutto non funziona.
Io ad esempio, avevo usato cn per la username, al posto di uid, e non mi funzionava niente... e ci ho perso molto tempo prima di risolvere il problema!

Bene, ora che l'autenticazione openldap php non ha più segreti per voi, potrete creare dei siti web con area riservata, il cui baciono di utenti accinge direttamente da un database ldap, magari condiviso con altri siti o applicazioni web.

Lascia un commento!