PDA

Ver la Versión Completa : Apache2 y Ldap



satelier.martin
24-dic-2012, 05:50
Hola a todos, hace unos dias me instale un OpenSuSe 12 para remplaza un servidor Mac OSX Lion.
Estoy tratando de configurar el acceso webdav de un servidor Apache2 con LDAP.
Instale y configure el servidor Apache2 todo salio OK.
Instale y configure el servidor LDAP todo salio OK.
Configure el cliente LDAP y el Browser. Pude acceder al servidor LDAP, luego agrege un usuario "test" desde el administrador de usuarios y grupos de Yast.

Configure el Servidor Apache de la siguinte forma:

<IfModule mod_dav.c>
# XML request bodies are loaded into memory;
# limit to 128K by default
LimitXMLRequestBody 131072

# Location of the WebDav Repository.
Alias /webdav "/store/users"
<Directory /store/users>

# Enable webdav for this directory
Dav On

# Require SSL connection for password protection.
#SSLRequireSSL

AuthBasicProvider ldap
# Do basic password authentication in the clear
AuthType Basic
# The name of the protected area or "realm"
AuthName "WebDAV LDAP Authorization"
AuthLDAPURL "ldap://localhost:389/dc=Domain,dc=com?uid?sub?(objectClass=*)"
# The LDAP query URL
# Format: scheme://host:port/basedn?attribute?scope?filter
# The URL below will search for all objects recursively below the basedn
# and validate against the sAMAccountName attribute

# LDAP Authentication & Authorization is final; do not check other databases
AuthzLDAPAuthoritative off
# Active Directory requires an authenticating DN to access records
# This is the DN used to bind to the directory service
# This is an Active Directory user account
AuthLDAPBindDN cn=UserAdmin,dc=centralwimixs,dc=com
# This is the password for the AuthLDAPBindDN user in Active Directory
AuthLDAPBindPassword PASSUserAdmin
# Require authentication for this Location
Require valid-user
#Require ldap-group cn=userStore,ou=group,dc=CentralWimixs
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</IfModule>


Pero en el log de Apache aparece:


[Sun Dec 23 21:05:45 2012] [error] [client ::1] user test: authentication failure for "/webdav/": Password Mismatch

Y en el de LDAP:

Dec 23 21:05:45 SuSeServer slapd[5228]: connection_get(12): got connid=1000
Dec 23 21:05:45 SuSeServer slapd[5228]: connection_read(12): checking for input on id=1000
Dec 23 21:05:45 SuSeServer slapd[5228]: op tag 0x63, time 1356307545
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=2 do_search
Dec 23 21:05:45 SuSeServer slapd[5228]: >>> dnPrettyNormal: <dc=centralwimixs,dc=com>
Dec 23 21:05:45 SuSeServer slapd[5228]: <<< dnPrettyNormal: <dc=centralwimixs,dc=com>, <dc=centralwimixs,dc=com>
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=2 SRCH base="dc=centralwimixs,dc=com" scope=2 deref=3 filter="(&(objectClass=*)(uid=test))"
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=2 SRCH attr=uid
Dec 23 21:05:45 SuSeServer slapd[5228]: => hdb_search
Dec 23 21:05:45 SuSeServer slapd[5228]: bdb_dn2entry("dc=centralwimixs,dc=com")
Dec 23 21:05:45 SuSeServer slapd[5228]: search_candidates: base="dc=centralwimixs,dc=com" (0x00000001) scope=2
Dec 23 21:05:45 SuSeServer slapd[5228]: => bdb_equality_candidates (objectClass)
Dec 23 21:05:45 SuSeServer slapd[5228]: => key_read
Dec 23 21:05:45 SuSeServer slapd[5228]: <= bdb_index_read: failed (-30988)
Dec 23 21:05:45 SuSeServer slapd[5228]: <= bdb_equality_candidates: id=0, first=0, last=0
Dec 23 21:05:45 SuSeServer slapd[5228]: => hdb_dn2idl("dc=centralwimixs,dc=com")
Dec 23 21:05:45 SuSeServer slapd[5228]: => bdb_equality_candidates (objectClass)
Dec 23 21:05:45 SuSeServer slapd[5228]: => key_read
Dec 23 21:05:45 SuSeServer slapd[5228]: <= bdb_index_read: failed (-30988)
Dec 23 21:05:45 SuSeServer slapd[5228]: <= bdb_equality_candidates: id=0, first=0, last=0
Dec 23 21:05:45 SuSeServer slapd[5228]: => bdb_presence_candidates (objectClass)
Dec 23 21:05:45 SuSeServer slapd[5228]: => bdb_equality_candidates (uid)
Dec 23 21:05:45 SuSeServer slapd[5228]: => key_read
Dec 23 21:05:45 SuSeServer slapd[5228]: <= bdb_index_read 1 candidates
Dec 23 21:05:45 SuSeServer slapd[5228]: <= bdb_equality_candidates: id=1, first=7, last=7
Dec 23 21:05:45 SuSeServer slapd[5228]: bdb_search_candidates: id=1 first=7 last=7
Dec 23 21:05:45 SuSeServer slapd[5228]: entry_decode: ""
Dec 23 21:05:45 SuSeServer slapd[5228]: <= entry_decode()
Dec 23 21:05:45 SuSeServer slapd[5228]: => send_search_entry: conn 1000 dn="uid=test,dc=centralwimixs,dc=com"
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=2 ENTRY dn="uid=test,dc=centralwimixs,dc=com"
Dec 23 21:05:45 SuSeServer slapd[5228]: <= send_search_entry: conn 1000 exit.
Dec 23 21:05:45 SuSeServer slapd[5228]: send_ldap_result: conn=1000 op=2 p=3
Dec 23 21:05:45 SuSeServer slapd[5228]: send_ldap_response: msgid=3 tag=101 err=0
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=2 SEARCH RESULT tag=101 err=0 nentries=1 text=
Dec 23 21:05:45 SuSeServer slapd[5228]: connection_get(12): got connid=1000
Dec 23 21:05:45 SuSeServer slapd[5228]: connection_read(12): checking for input on id=1000
Dec 23 21:05:45 SuSeServer slapd[5228]: op tag 0x60, time 1356307545
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=3 do_bind
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=3 BIND anonymous mech=implicit ssf=0
Dec 23 21:05:45 SuSeServer slapd[5228]: >>> dnPrettyNormal: <uid=test,dc=centralwimixs,dc=com>
Dec 23 21:05:45 SuSeServer slapd[5228]: <<< dnPrettyNormal: <uid=test,dc=centralwimixs,dc=com>, <uid=test,dc=centralwimixs,dc=com>
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=3 BIND dn="uid=test,dc=centralwimixs,dc=com" method=128
Dec 23 21:05:45 SuSeServer slapd[5228]: do_bind: version=3 dn="uid=test,dc=centralwimixs,dc=com" method=128
Dec 23 21:05:45 SuSeServer slapd[5228]: bdb_dn2entry("uid=test,dc=centralwimixs,dc=com")
Dec 23 21:05:45 SuSeServer slapd[5228]: send_ldap_result: conn=1000 op=3 p=3
Dec 23 21:05:45 SuSeServer slapd[5228]: send_ldap_response: msgid=4 tag=97 err=49
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=3 RESULT tag=97 err=49 text=
Dec 23 21:05:45 SuSeServer slapd[5228]: connection_get(12): got connid=1000
Dec 23 21:05:45 SuSeServer slapd[5228]: connection_read(12): checking for input on id=1000
Dec 23 21:05:45 SuSeServer slapd[5228]: op tag 0x42, time 1356307545
Dec 23 21:05:45 SuSeServer slapd[5228]: ber_get_next on fd 12 failed errno=0 (Success)
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=4 do_unbind
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 op=4 UNBIND
Dec 23 21:05:45 SuSeServer slapd[5228]: connection_close: conn=1000 sd=12
Dec 23 21:05:45 SuSeServer slapd[5228]: conn=1000 fd=12 closed
Dec 23 21:12:09 SuSeServer slapd[5228]: daemon: shutdown requested and initiated.
Dec 23 21:12:09 SuSeServer slapd[5228]: slapd shutdown: waiting for 0 operations/tasks to finish
Dec 23 21:12:09 SuSeServer slapd[5228]: slapd shutdown: initiated
Dec 23 21:12:09 SuSeServer slapd[5228]: ====> bdb_cache_release_all
Dec 23 21:12:09 SuSeServer slapd[5228]: slapd destroy: freeing system resources.
Dec 23 21:12:09 SuSeServer slapd[5228]: slapd stopped.


Probe con diferentes AuthLDAPURL pero nada, cambie de usuarios,grupos, pass pero no logro autentificarme correctamente desde Apache.

Si alguien tiene alguna idea se los agradeceria.

Saludos.

satelier.martin
24-dic-2012, 18:56
Realice un avance en el tema.
Realmente el log no dice mucho, salvo "Password Mismatch" y había leído que ese error puede darse por varias razones.
Luego de mucho probar funciono. Como funciono? con los siguientes pasos.
Abrir el LDAP Browser que viene en el Yast, configure la conexión y entre al árbol del LDAP. Abri la primer rama y luego la rama del usuario que estaba usando ("test").
En la parte derecha del programa muestra los atributos y valores del usuario y en el atributo userPassword note que estaba el password que le asigne ("test1") pero con "{exop}" al principio.
exop es el tipo de protocolo con el que se asigna o cambia la contraseña el cual se configura en el cliente de LDAP.
Lo primero que hice es quitarle esto ({exop}) y dejar solo el pass ("test1") lo probé y funciono correctamente.

Pero no podia cambiar esto cada vez que creaba un usuario y tampoco dejar que la pass se lea directamente desde el arbol del LDAP asi que modifique el tipo de protocolo por "crypt", cree un usuario nuevo y al revisar el árbol aparece {crypt} el un hash con la contraseña. Luego probé que funcione desde el Apache2 y funciono correctamente.

Espero que esta experiencia le sirva a alguien.
Saludos.