Servidor LDAP en Debian/Ubuntu
LDAP és una especificació de servei de directori. Es sol utilitzar per centralitzar comptes d'usuari per diferents aplicacions.
L'objectiu d'aquest article és crear un directori bàsic per autenticació d'aplicacions web.
No cobrirem la creació d'usuaris per validació amb el SO Linux ni la compatibilitat amb Windows.
Contingut
Instal·lació a Debian / Ubuntu
Primer l'instal·larem com de costum:
# apt-get install slapd
Després s'ha de reconfigurar per configurar els arxius bàsics:
# dpkg-reconfigure slapd
Evidentment, cal que recordeu la contrassenya que heu generat per l'usuari "admin".
Instal·lació de Webmin
Webmin és un paquet que ens pot ajudar a administrar el servidor LDAP: http://www.webmin.com
Aneu a Downloads on hi ha la descàrrega del package per Debian i les instruccions per instal·lar-ho.
Amb la versió Ubuntu 12.04 sembla que Webmin no funciona d'entrada per gestionar el servidor LDAP.
Apache Directory Studio
ADS és una eina stand alone que ens anirà perfecte per administrar el servidor LDAP.
- Primer instal·leu un Java JRE (si teniu instal·lat el Eclipse ja el deveu tenir).
- Descarregueu-la de http://directory.apache.org/studio/
- Versió Linux:
- Es desempaqueta a un directori tipus "ApacheDirectoryStudio-linux-x86-2.0.0.v20130131" (tar xvf)
- Convé moure aquesta carpeta al directori ~/bin de l'usuari i fer-hi un link perquè puguem executar l'aplicació directament amb
$ ApacheDirectoryStudio
Per connectar-nos a la nostra màquina cal crear una connexió amb els paràmetres (exemples):
- Authentication Method: Simple Authentication
- Bind DN or user: cn=admin,dc=enric,dc=local
- Bind password: la que hagueu posat.
NOTA: si veiem que tenim dificultats per connectar-nos, va bé primer fer una connexió anònima (sense autenticació, permet llegir els usuaris), amb el què ens trobarà el nom del domini (dc=enric,dc=local, per exemple).
Creant els primers usuaris
Per crear els usuaris amb l'Apache Directory Studio:
- Clicar amb botó dret sobre el domini (dc=..., dc=...) -> New Entry
- Crear un nou objecte amb les objectClass següents: "person", "uidObject" (i "top" que ens ho posa automàticament):
- person: ens permetrà afegir els atributs:
- cn = Common Name
- sn = surname, ens obligarà a posar-ho.
- uidObject: ens permetrà afegir els atributs:
- uid = user id (per autenticació)
- userPassword : la necessitarem per autenticar-nos. Potser la més segura és SSHA (Salted SHA1).
- person: ens permetrà afegir els atributs:
- Assignar tots aquests atributs comentats
Primer codi de comprovació en PHP
Recorda que si tens una màquina AWS tindràs que obrir el port 389 per poder-te connenctar al servei LDAP.
Necessitem la llibreria php5-ldap:
# apt-get install php5-ldap # service apache2 restart
I ja podem provar d'autenticar-nos sobre el nostre servidor:
<h1>prova LDAP</h1>
<?php
$ldapconfig['host'] = 'localhost';
$ldapconfig['port'] = NULL; // es el 389 però amb NULL l'agafa per defecte
$ldapconfig['basedn'] = 'dc=enric,dc=local';
$ldapconfig['authrealm'] = 'My Realm';
$username = "manolo";
$passw = "manolo123";
echo "Inici...</br>";
$ds = ldap_connect($ldapconfig['host'],$ldapconfig['port']);
if( !$ds ) {
echo "Error en la connexio</br>";
exit(0);
}
echo "buscant usuari... <b>".$username."</b><br>\n";
$r = ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $username );
if ($r) {
echo "usuari trobat: <b>".$username."</b><br>\n";
$result = ldap_get_entries( $ds, $r);
var_dump($result);
echo "\n<br><br>\n";
if (count($result)>0)
if($result[0]) {
// Eps! si no, no va!
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
// check passw
if (ldap_bind( $ds, $result[0]['dn'], $passw) ) {
//return $result[0];
echo "Contrasenya OK<br>\n";
} else {
echo "Contrasenya ERRONIA<br>\n";
}
}
}
?>