Gerrit + LDAP:"Cannot assign user name "X“到帐户 Y;名称不符合”

Gerrit + LDAP: "Cannot assign user name "X" to account Y; name does not conform"

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

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

如果新用户已经拥有通过 LDAP 提供的帐户,他应该能够登录 Gerrit。对吗?

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

与 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.

我真的迷路了。提前致谢。

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

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

"objectClass=xxxx" 子句也在 Gerrit documentation ldap 示例中显示。

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

我终于可以让它工作了!

我做了什么:

  1. 已停止 Gerrit (./bin/gerrit.sh stop)

  2. 打开数据库(java -jar bin/gerrit.war gsql)

  3. 在帐户中插入了新行 table (insert into ACCOUNTS values ('2018-10-11 00:00:00.000', 'Name Surname', 'name.surname@company.com.br', 'N', 'NULL', 1000052);)

  4. 在 ACCOUNT_EXTERNAL_IDS table 中插入了两个引用新用户 ID 的新行(insert into ACCOUNT_EXTERNAL_IDS values ('1000052', 'name.surname@company.com.br', 'NULL', 'gerrit:name.surname');insert into ACCOUNT_EXTERNAL_IDS values ('1000052', 'NULL', 'NULL', 'username:name.surname');

  5. 再次启动 Gerrit (./bin/gerrit.sh start)

如果有人能解释这里发生了什么...请!