GitLab 更改 LDAP 绑定用户名结构

Posted

技术标签:

【中文标题】GitLab 更改 LDAP 绑定用户名结构【英文标题】:GitLab Change LDAP bind username structure 【发布时间】:2019-06-22 05:26:59 【问题描述】:

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

或者为什么 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

【问题讨论】:

糟糕,需要知道如何更改 gitlab 以便它在绑定请求中发送“域\用户名”! 【参考方案1】:

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

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

【讨论】:

感谢您的回复,两个密码都是一样的,我已经添加了密码回复问题! 是否为提供的 ID 找到了正确的用户?:是的,该用户确实存在于 Head Office\Users OU 中。

以上是关于GitLab 更改 LDAP 绑定用户名结构的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab 身份验证返回无效的用户名或密码(缺少 LDAP 窗格)

如何在 GitLab-CE 中取消阻止 LDAP 用户

LDAP 到 gitlab 用户同步 oauth 令牌

gitlab与ldap集成

LDAP/AD认证

gitlab与ldap集成