Gerrit + LDAP:“无法将用户名“ X”分配给帐户Y;名称不符合”

时间:2018-10-04 12:32:01

标签: ldap gerrit

我是Gerrit的新手。进行设置的人离开了公司,现在我需要为新员工创建一个帐户。

我们正在使用LDAP进行身份验证。它适用于所有注册用户。

如果新用户已经具有通过LDAP提供的帐户,则应该能够登录到Gerrit。对吧?

但是,当他尝试登录时,出现错误“ Cannot assign user name "Example Name" to account 1000054; name does not conform.”。 详细信息:每次尝试登录失败后,帐号(在示例中为1000054)都会增加。 详细信息2:如果输入了错误的密码,则会引发错误的电子邮件/密码错误。

与LDAP管理员交谈时,他告诉用户请求尚未到达LDAP服务器。

试图使用java -jar bin/gerrit.war gsql打开Gerrit DB。在“ ACCOUNTS”和“ ACCOUNT_EXTERNAL_IDS”表中没有与此新用户相关的信息。

我们的设置:

[ldap]
    server = ldap://LDAP_SERVER_IP
    accountBase = OU=Usuários Rede,OU=COMPANY,DC=COMPANY,DC=com,DC=br
    groupBase = OU=Grupos,OU=COMPANY,DC=COMPANY,DC=com,DC=br
    referral = follow
    accountPattern = (mailNickname=${username})
    groupPattern = (memberOf=${cn})
    accountFullName = cn
    accountEmailAddress = mail
    accountSshUserName = cn
    username = ldapread@COMPANY_NAME.com.br
    password = PASS

如何调试这里的问题?我们公司中的用户名遵循name.surname模式。

我真的迷路了。预先感谢。

2 个答案:

答案 0 :(得分:0)

我将我们的设置与您的设置进行了比较,我认为accountPattern和groupPattern中缺少某些设置。这是我们的设置:

accountPattern = (&(objectClass=user)(sAMAccountName=${username}))
groupPattern = (&(objectClass=group)(cn=${groupname}))

Gerrit documentation ldap示例中也显示了“ objectClass = xxxx”子句。

但是我无法解释为什么它不适用于新用户。

答案 1 :(得分:0)

我终于可以开始工作了!

我做了什么:

  1. 停止使用Gerrit(endTime

  2. 打开数据库(./bin/gerrit.sh stop

  3. 在ACCOUNTS表(java -jar bin/gerrit.war gsql)中插入了新行

  4. 在ACCOUNT_EXTERNAL_IDS表中插入了两个新行,它们引用了新的用户ID(insert into ACCOUNTS values ('2018-10-11 00:00:00.000', 'Name Surname', 'name.surname@company.com.br', 'N', 'NULL', 1000052);insert into ACCOUNT_EXTERNAL_IDS values ('1000052', 'name.surname@company.com.br', 'NULL', 'gerrit:name.surname');

  5. 再次启动Gerrit(insert into ACCOUNT_EXTERNAL_IDS values ('1000052', 'NULL', 'NULL', 'username:name.surname');

如果有人可以解释这里发生的事情...请!