格里特和Active Directory(Gerrit and Active Directory)

2019-07-29 06:04发布

我试图建立格瑞特使用我们公司的Active Directory进行身份验证。 我知道很多人已经成功地得到这个工作,但它只是不会为我工作。

如果我运行ldapsearch命令,如下所示我得到正确的结果,所以我知道我的搜索字符串是正确的:

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

但是,用我的格里特配置相同的设置不起作用:

[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

当我尝试登录使用我的帐户,我得到以下异常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)
    [...]

有没有人成立了一个类似的配置也许能帮助我们吗?

Answer 1:

对不起球员,我的错在这里。 在我的配置我使用ldap.user我的设置名称,而不是ldap.username 。 有一次,我改变了我的AD正常结合的作品。



Answer 2:

在您的例子中,你使用"CN=adam,CN=Users,DC=myusers,DC=com"但该错误消息指出专有名称应该是这样的...,CN=Users,DC=NRII,DC=com 。 请您在配置中指定的基本对象是正确的,例如,其条目是cn=adam下属?



Answer 3:

该错误是,你正试图而不结合搜索,但这是你的LDAP应用程序应该为你做,从而格里特应该使用提供绑定的信息,然后搜索。 但错误意味着它跳过了一步那里。



Answer 4:

我挣扎得到它的工作(格里特2.13.1)。 当时我是在一个高度管制的公司,所以,我不敢要求对公司的Active Directory中格里特专用用户的创建。 不幸的是这家公司的标准用户创建过程(?在Windows中)为姓氏和名字,导致AD用户名,如:

CN = DOE,约翰,OU = EvilCorp用户,DC = FOO,DC =酒吧,DC = CORP

       ^
       |   

专家的眼睛会看到的问题可能通过OU = EvilCorp用户的空格字符,但这是逗号

在姓氏,名字图案像CN = DOE,约翰产生问题。

一旦我有我的格里特专用用户创建(GerritUser,没有名字),该行:

用户名= CN = GerritUser,OU = EvilCorp用户,DC = FOO,DC =酒吧,DC = CORP

被接受,我能够符合我一贯的personnal的Windows / AD用户ID和密码登录。

请注意,如果你想逃跑,如CN =李四\,约翰逗号......带或不带双引号的gerrit.config文件被宣告无效

很显然,对于一个正则表达式的作家,削减有关逗号仅会更方便。

:格里特测试在Windows

的等抽象/ 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
...

的等抽象/ secure.config

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


文章来源: Gerrit and Active Directory