Gerrit y Active Directory

Intento configurar a Gerrit para que use nuestro Active Directory corporativo para la authentication. Sé que mucha gente ha logrado que esto funcione, pero simplemente no funcionará para mí.

Si ejecuto un command ldapsearch siguiente manera obtengo el resultado correcto, entonces sé que mis cadenas de búsqueda son correctas:

 ldapsearch -h myserver -b "CN=Users,DC=mycompany,DC=com" -D "CN=adam,CN=Users,DC=mycompany,DC=com" -w mypassword "(sAMAccountName=adam)" 

Pero el uso de estos mismos ajustes en mi configuration de Gerrit no funciona:

 [auth] type = LDAP [ldap] server = ldap://myserver accountBase = CN=Users,DC=mycompany,DC=com groupBase = OU=Gerrit,DC=mycompany,DC=com user = CN=adam,CN=Users,DC=mycompany,DC=com password = mypassword referral = follow accountPattern = (sAMAccountName=${username}) groupPattern = (cn=${groupname}) accountFullName = displayName accountMemberField = memberOf accountEmailAddress = mail 

Cuando trato de iniciar session usando mi count obtengo la siguiente exception en etc/error_log :

 [2012-05-04 10:03:04,595] ERROR com.google.gerrit.server.auth.ldap.LdapRealm : Cannot query LDAP to autenticate user javax.naming.NamingException: [LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece^@]; remaining name 'CN=Users,DC=mycompany,DC=com' at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3072) at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2978) at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2785) at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1839) at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1762) at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1779) [...] 

¿Alguien ha configurado una configuration similar que podría ayudar?

Lo siento muchachos, mi culpa aquí. En mi configuration, estoy usando ldap.user como mi nombre de configuration en lugar de ldap.username de ldap.username . Una vez que cambié, mi enlace AD ​​funciona correctamente.

En su ejemplo, usa "CN=adam,CN=Users,DC=myusers,DC=com" , pero el post de error indica que el nombre "CN=adam,CN=Users,DC=myusers,DC=com" debería ser algo así como ...,CN=Users,DC=NRII,DC=com . Verifique que los objects base que especifique en la configuration sean correctos, por ejemplo, ¿a cuál input es cn=adam subordinate?

El error es que está intentando search sin enlace, pero eso es lo que se supone que su aplicación LDAP debe hacer por usted, por lo tanto, Gerrit debería haber utilizado la información proporcionada, encuadernada y luego buscada. Pero el error implica que se está saltando un paso allí.

Luché para que funcione (Gerrit 2.13.1). En ese momento yo estaba en una empresa altamente regulada por lo que no me atreví a solicitar la creación de un usuario dedicado para Gerrit en el Directorio Activo de la compañía. Lamentablemente, el process de creación de usuarios estándar en esta empresa (en Windows?) Era el apellido y el nombre, lo que lleva a un nombre de usuario AD como:

CN = Doe, John, OU = Usuarios de EvilCorp, DC = foo, DC = bar, DC = corp

  ^ | 

Los ojos de los expertos verían problemas quizás a través del carácter de espacio en OU = Usuarios de EvilCorp, pero esta es la coma

,

en el patrón Apellido, Nombre como CN = Doe, Juan que creó el problema.

Una vez que tuve mi usuario dedicado de Gerrit creado ( GerritUser , sin nombre), la línea:

username = CN = GerritUser, OU = Usuarios de EvilCorp, DC = foo, DC = bar, DC = corp

fue aceptado y pude iniciar session con mi ID de usuario / contraseña habitual de Windows / AD.

Tenga en count que el file gerrit.config se declara inválido si intenta escaping de la coma como CN = Doe \, John … con o sin comillas dobles "

Está claro para un escritor de expresiones regulares que cortar con comas solo sería más conveniente.

Nota: probado con gerrit en Windows

Resumen de etc / gerrit.config

 ... [auth] type = LDAP [ldap] server = LDAP://xx.yy.zz.ww username = CN=GerritUser,OU=EvilCorp Users,DC=foo,DC=bar,DC=corp accountBase = ou=EvilCorp Users,dc=foo,dc=bar,dc=corp accountPattern = (&(objectClass=user)(sAMAccountName=${username})) accountFullName = displayName accountEmailAddress = mail ... 

Resumen de etc / secure.config

 ... [ldap] password = Password_Of_GerritUser ...