Uno de tantos post que habra por internet sobre un apache con LDAP
1.- Configuracion del LDAP de Windows 2003 Server
Disponemos de un servidor Windows 2003 server instalado por defecto con el DNS y Active Directory. Este es el estado actual del servidor:

Comprobamos cual es el puerto del LDAP (por defecto 389) y que esta escuchando:

2.- Instalacion de Apache
Hemos descargado el ultimo apache hasta donde yo escribí esto en su momento: httpd-2.2.8.tar.gz
tar -xvzf httpd-2.2.8.tar.gz
cd httpd-2.2.8/
./configure –prefix=/usr/local/apache2 –enable-module=so –enable-ldap –enable-authnz-ldap
Donde activamos los dos modulos que vamos a utilizar ldap y authnz-ldap. Compilamos e instalamos:
make
make install
3.- Configuracion de Apache
Vamos a /usr/local/apache2/conf/ y editamos httpd.conf
Por defecto apache apunta al directorio /usr/local/apache2/htdocs/ donde hay un index y donde podemos cargar las paginas de nustro servidor web. Para direcrenciarlo me he creado un directorio /usr/local/apache2/htdocs2/ donde he introducido el index.html modificado:
<html><body><h1>Funciona el LDAP</h1></body></html>
Fichero que coge por defecto en:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
Al final del archivo httpd.conf me he creado un directorio virtual, que al estar en el mismo puerto por defecto de apache 80, sobreescribe la configuracion del mismo y nos apuntara al directorio donde he incluido mi index.html. Los cambios introducidos al final del fichero httpd.conf son los siguientes:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin ismael@dominio.local
DocumentRoot “/usr/local/apache2/htdocs2/”
ServerName web-ldap.dominio.local
ErrorLog “logs/ldap-error_log”
CustomLog “logs/ldap-access_log” common
<Directory “/usr/local/apache2/htdocs2″>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthBasicProvider ldap
AuthName “Autenticacion LDAP”
AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?sub?(objectClass=*)”
#AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?sub?”
#AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?”
AuthLDAPBindDN “CN=Administrador,CN=Users,DC=dominio,DC=local”
AuthLDAPBindPassword “**Password de Administrador**”
AuthzLDAPAuthoritative on
Require valid-user
</Directory>
</VirtualHost>
Arrancamos el apache:
/usr/local/apache2/bin/apachectl start
y accedemos ala URL http://192.168.0.18 o http://web-ldap.dominio.local
Nos pedira un usuario que este dentro de la unidad organizativa Users.
4.- Errores comunes y pruebas
Si metemos mal la URL nos saldra un error como el que sigue:
suse:/usr/local/apache2/logs # tail -f ldap-error_log
[Sun Jun 01 13:18:04 2008] [warn] [client 192.168.0.11] [14765] auth_ldap authenticate: user administrador authentication failed; URI / [ldap_search_ext_s() for user failed][No such object]
[Sun Jun 01 13:18:04 2008] [error] [client 192.168.0.11] user administrador not found: /
Esto nos puede pasar en varias cosas:
- Mal puesto el dominio. En mi caso dominio.local fallaria si pongo “…DC=domain,DC=local…”
- Mal puesto el nombre “OU”,”CN”,”Dc” : En mi caso y por defecto de haber hecho una instalacion de windows 2003 hay que poner CN para la unidad organizativa y no OU. Como vemos en la imagen del Active Directoru hay una unidad organizativa llamada “usuarios”. Si quisiesemos usarla si que deberiamos de poner OU.
- Mal puesto el filtro del LDAP. Me ha funcionado tambien con:
AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?”
AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?sub?”
AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?sub?(objectClass=*)”
esto es configuracion basica de LDAP.
Un servidor por defecto de Windows 2003 viene el ldap configurado para que nos pida credenciales de autenticacion en el ldap del dominio. Si quitasemos las directivas AuthLDAPBindDN y AuthLDAPBindPassword no funcionaria y nos saldria el siguiente error en el navegador:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@dummy-host2.example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
y el log:
suse:/usr/local/apache2/logs # tail -f ldap-error_log
[Sun Jun 01 13:14:39 2008] [warn] [client 192.168.0.11] [14684] auth_ldap authenticate: user administrador authentication failed; URI / [ldap_search_ext_s() for user failed][Operations error]
Si metemos mal el usuario nos saldra un log como este, en el que ya no nos dice que el usuario administrador no se encuentra:
suse:/usr/local/apache2/logs # tail -f ldap-error_log
[Sun Jun 01 13:10:58 2008] [warn] [client 192.168.0.11] [14612] auth_ldap authenticate: user administrador authentication failed; URI / [ldap_simple_bind_s() to check user credentials failed][Invalid credentials]
[Sun Jun 01 13:10:58 2008] [error] [client 192.168.0.11] user administrador: authentication failure for “/”: Password Mismatch
Eso es todo, es bueno instalarlo uno mismo y ver como funciona sobre todo provoccando errores y mirando el log.