lunedì 19 dicembre 2011

Autenticarsi ad un dominio Active directory con PHP e Open LDAP

Per prima cosa si deve verificare che ci sia il supporto LDAP installate.
Per verificare questo basta creare un pagina informazioni con:
echo phpinfo();
 Se eseguiamo la pagina e si vede il supporto LDAP allora siamo pronti altrimenti si deve ricompilare php con il supporto LDAP aggiungendo l'opzione --with-ldap[=DIR] per configurarlo.
Utilizzando Ubuntu in alternativa si possono installare i pacchetti occorrenti tramite i comandi:
sudo apt-get install slapd ldap-utils
andare nella configurazione di php
/etc/php5/apache/php.ini
aggiungendo :
extension=mod_ldap.so
poi riavviare apache sudo /etc/init.d/apache2 restart
sudo apt-get install php5-gd php5-ldap
sudo /etc/init.d/apache2 restart
dopodichè siamo pronti per creare la pagina di collegamento ad Active directory

che sarà:
// basic sequence with LDAP is connect, bind, search, interpret search
// result, close connection
$ldapserver="indirizzo ip o nome host del server Active Directory";
$ldaprdn ="Nome Utente";
$ldappass ="Password relativa all'utente"; //questi ultimi 2 dati si possono prenderre anche da
                                                                //una form HTML
$filter ="mail=*";

echo "

LDAP query test

";
echo "Connesione ...";
//connessione al server
$ds=ldap_connect($ldapserver);  //  deve essere un nome server LDAP valido!
echo "risultato di connessione : " . $ds . "
";

if ($ds) {
    echo "Autenticazione ...";
    $utente=$ldaprdn ."@". $ldapserver; //spesso il nome utente deve essere seguito da nome del
                                                             //server es. Utente@Server_LDAP
    echo $utente;
    $lv = ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
    $r=ldap_bind($ds,$utente,$ldappass);
    echo "Risultato della connessione: " . $r . "
";
<--------------------------------da verificare --------------------------->
    echo "Searching for (sn=S*) ...";
    // Search surname entry
    $sr=ldap_search($ds,"dc=provincia,dc=tn,dc=it",$filter);
    echo "Search result is " . $sr . "
";

    echo "Number of entires returned is " . ldap_count_entries($ds, $sr) . "
";

    echo "Getting entries ...";
    $info = ldap_get_entries($ds, $sr);
    echo "Data for " . $info["count"] . " items returned:
";

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn is: " . $info[$i]["dn"] . "
";
        echo "first cn entry is: " . $info[$i]["cn"][0] . "
";
        echo "first email entry is: " . $info[$i]["mail"][0] . "

";
    }
    echo" get DN
";
    $dn = ldap_get_dn ($ds,$resource);
    echo "result is " . $dn;
    $informazioni=ldap_get_entries ($ds);
    echo "- numero entrate ".$informazioni['count'];
    echo "
";
    echo "Closing connection";
    ldap_close($ds);

} else {
    echo "

Unable to connect to LDAP server

";
}
?>

da verificare e spiegare le funzioni.

Nessun commento:

Posta un commento