Últimamente en el ámbito laboral he tenido que implementar algunas cosas nuevas con las que nunca me había topado, y sin duda, no he querido dejar pasar la oportunidad para documentarlo y compartirlo.

En ocasiones, puede resultar muy útil implementar sistemas de autenticación genéricos en el lugar donde trabajas, no todos lamentablemente usan Linux y por el contrario, están tan acostumbrados a usar un sistema de autenticación basado en un Windows Server sobre un dominio.Por tal motivo, si desarrollas una aplicación web bajo un servidor linux, pero necesitas autenticación existente en un Servidor Windows tienes la posibilidad de hacerlo mediante LDAP.

Según wikipedia: LDAP son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. Habitualmente, almacena la información de autenticación (usuario y contraseña) y es utilizado para autenticarse aunque es posible almacenar otra información.

Por ello, es posible utilizarlo de intermediario entre nuestra aplicación y el sistema de autenticación de Windows.

En mi caso especifico, desarrolle algunas aplicaciones web's basadas en PHP y Apache2 corriendo bajo un Ubuntu Server , así que, mostraré solo el pedazo de código que me permite autenticar.

function authLDAP($username, $password){        
    $ldap_domain = 'midominio';        
    $adServer = "miservidor";        
    $ldapconn = ldap_connect($adServer) or die("Could not connect to LDAP server.");                
    $ldaprdn = $username;            
    # Descomentar si la App corre bajo Apache2 sobre Windows Server        
    #ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3)        
    $ldapbind = ldap_bind($ldapconn, "$ldaprdn@$ldap_domain", $password);                
    if($ldapbind)            
        return true;        
    else            
        return false;    
}

Fácil, sencillo y útil. Si necesitas mas información o detalles técnicos del modulo LDAP para PHP puedes consultarlo en http://php.net/manual/en/book.ldap.php . Como punto importante, hay que tener el módulo LDAP para PHP activado. Así que si estas en un servidor Debian/Ubuntu, solo basta con instalar los siguientes paquetes.

$ sudo apt-get install php5-ldap php-net-ldap php-net-ldap2 php-auth
Y confirmar que esté realmente activo el modulo en el archivo /etc/php5/conf.d/ldap.ini de la siguiente manera.

; configuration for php LDAP moduleextension=ldap.so
Reiniciamos Apache.

$ sudo /etc/init.d/apache2 restart
Y ya tendremos el modulo activado.

Notas adicionales:Si tu aplicación web esta corriendo sobre un Apache2 instalado en un Windows Server, activar el modulo basta con descomentar la linea en el archivo php.ini quitando el punto y coma ";".
extension=php_ldap.dll
Y añadir los módulos al iniciar Apache2 en el archivo httpd.conf
LoadModule authnz_ldap_module modules/mod_authnz_ldap.soLoadModule ldap_module modules/mod_ldap.so

Jorge Hernandez :: http://jorgeluis.com.mx

    El mágico Torrent SearchFLISOL Celaya 2012: Plática "Python + WebKit"