No se puede autenticar a un usuario de Subversion usando Apache y LDAP

Intento utilizar la authentication LDAP para un repository de Subversion, al que se accede a través del Servidor Apache HTTP. Cualquier cosa que bash, Apache genera el siguiente post de error:

authentication failed; URI /repos/branches/my-branch [ldap_search_ext_s() for user failed][Operations Error] 

Utilicé el explorador AD de Sysinternals para conectarme a mi server AD y puedo ver los datos allí, así que supongo que es un problema con mi cadena de búsqueda de URL LDAP. He intentado varias variaciones, pero siempre obtengo el error anterior. Esto es lo que tengo en mi httpd.conf. Cualquier sugerencia o idea para diagnosticar esto sería apreciada.

 <Location /repos> DAV svn SVNPath C:\repos AuthType Basic AuthzLDAPAuthoritative off AuthBasicProvider ldap AuthName "IT Subversion repository" AuthLDAPURL "ldap://xyzcom:389/DC=y,DC=z,DC=com?sAMAccountName?sub?(objectClass=user)" NONE Require valid-user </Location> 

Parece que está utilizando Active Directory, que no permite el enlace anónimo. Intente agregar lo siguiente:

 # 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=someuser,CN=Users,DC=y,DC=z,DC=com" # This is the password for the AuthLDAPBindDN user in Active Directory AuthLDAPBindPassword some_secret_password 

Tenía algo simular, aunque más extraño. Al principio, cuando se testing, pero después de algunos reinicios de Apache y la configuration de ajuste, dejó de funcionar.

Después de una larga búsqueda en Internet, parece que tuve que cambiar el puerto de 389 a 3268. Esto solucionó mis errores "[ldap_search_ext_s () por error del usuario] [Error de operaciones]" por algún motivo. Todavía no entiendo por qué, o por qué funcionó al principio, pero lo hizo por mí.

Tenía el mismo problema, debe especificarlo en /etc/ldap/ldap.conf:

 REFERRALS off 

Resolvió mi problema

Mi problema se vendió cambiando el puerto de 389 a 3268. El puerto 389 solo busca Local Direcotry pero 3268 busca el Directorio global. Es confuso que en el browser LDAP (JXplorer, por ejemplo) funcione correctamente ambos puertos.

Tuve este problema recientemente, necesitas agregar 3 parameters adicionales

 AuthLDAPBindDN "CN=someuser,CN=Users,DC=y,DC=z,DC=com" AuthLDAPBindPassword some_secret_password 

Como sugirió Jgnagy, también me ayudó cuando agregué

 Satisfy Any 

Los LDAPReferrals simplemente no existían en versiones anteriores, por lo que no hay nada que desactivar, realmente …

Supongo que si lograras hacer coincidir un LDAP / Apache más nuevo que tiene LDAP Referral como una opción, e intentaras usar AD más antiguo, tendrías que desactivarlo.

Para que alguien más encuentre esto, debe intentar esto en order: telnet YOUR_AD_SERVER 389

O obtiene un Connect y algo así como el carácter Escape es ~, o tiene el nombre / IP incorrecto para su AD, o sus firewalls están bloqueando el acceso desde su computadora a AD en el puerto 389.

A continuación, instale las herramientas de command-line de openldap, openldap-clients, y vea si puede usar ldapsearch (lea la página man) para realizar una búsqueda directamente en su server AD, sin Apache en el medio.