GitLab 更改 LDAP 绑定用户名结构

GitLab Change LDAP bind username structure

我想更改 Gitlab 验证 AD 身份验证的方式,因为它将请求发送为 "CN=user ou=xx dc=xx"。但是 AD 需要它作为 Domain\user 发送。如何更改 Gitlab 配置以在绑定请求中发送“domain\username”?

或者为什么 Windows AD 会拒绝身份验证?

下面是我的 LDAP 配置

gitlab_rails['ldap_servers'] = {
'main' => {
  'label' => 'AD',
  'host' =>  '10.0.0.1',
  'port' => 389,
  'uid' => 'sAMAccountName',
  'base' => 'DC=AAA,DC=ORG,DC=LOCAL',
 'bind_dn' => 'AAA\abcdefgh',
 'password' => 'Password4',
  'block_auto_created_users'=> 'true',
  'active_directory' => true,
  'lowercase_usernames' => true,

        }
}

wireshark 镜像如下。

绑定密码发送数据包4。

绑定密码发送包18

Active Directory 不需要 登录格式为 domain\uid -- 这是绑定到 AD 时可以使用的三种有效 ID 格式之一通过 LDAP,但 uid@domain 和 LDAP 完全限定的 DN 同样有效。 GitLab 所做的是使用配置中的 bind_dn 和密码(wireshark #4)绑定到 AD,在配置为 'base' 的基础上搜索 (&(sAMAccountName=*user supplied uid*))(wireshark #11),returns 已识别帐户的完全限定 DN (wireshark #16),然后通过与完全限定 DN 和用户提供的密码 (wireshark #18) 绑定来验证用户的凭据。

52e(在绑定错误数据中)当用户 ID 与有效用户匹配但密码不正确时返回。是否为所提供的 ID 找到了正确的用户(即用户 在 dc=aaa,dc=org,dc=local 域中,并且可以在 Head [=21= 下找到]欧)?如果您 select 数据包 18,您将在数据包数据中看到密码——确认某些内容在传输过程中没有被损坏或输入错误。