2012-05-04 15 views
9

Estoy intentando configurar Gerrit para utilizar nuestro Active Directory corporativo para la autenticación. Sé que mucha gente ha logrado que esto funcione, pero simplemente no funcionará para mí.Gerrit y Active Directory

Si ejecuta un comando de la siguiente manera ldapsearch consigo el resultado correcto, así que 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 config 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 intento iniciar sesión con mi cuenta me sale el siguiente excepción 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 configuración similar que podría ayudar?

Respuesta

4

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

0

El error es que está intentando buscar sin encuadernar, pero eso es lo que debe hacer su aplicación LDAP, 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í.

1

En su ejemplo utiliza "CN=adam,CN=Users,DC=myusers,DC=com", pero el mensaje de error indica que el nombre completo debe ser algo así como ...,CN=Users,DC=NRII,DC=com. Compruebe que los objetos base que especifique en la configuración sean correctos, por ejemplo, ¿a qué entrada pertenece cn=adam subordinado?

+0

Lo sentimos, que debería haber sido cambiado a "miempresa". El nombre completo para mi usuario es definitivamente 'CN = adam, CN = Usuarios, DC = mycompany, DC = com' ya que eso funciona en el comando ldapsearch, pero no en Gerrit. –

0

Tuve problemas para ponerlo en funcionamiento (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. Desafortunadamente el proceso de creación de usuario estándar en esta empresa (? En Windows) era el apellido y nombre de pila, lo que lleva a un nombre de usuario similar a AD:

CN = Paz, Manuel, OU = EvilCorp Usuarios DC = foo, DC = bar, DC = corp

 ^
     | 

ojos de expertos se ven problemas tal vez a través del carácter de espacio en Usuarios OU = EvilCorp pero esta es la coma

,

en el patrón LastName, FirstName como CN = Doe, John que creó el problema.

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

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

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

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

Está claro para una escritor de expresiones regulares que cortar en un solo comas 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 
... 
Cuestiones relacionadas