AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 611404
Accepted
Aubrey Robertson
Aubrey Robertson
Asked: 2014-07-10 15:35:31 +0800 CST2014-07-10 15:35:31 +0800 CST 2014-07-10 15:35:31 +0800 CST

如何确定 LDAP 绑定到 Windows Server 2012 DC 的值?[Gitlab 综合 7.0.0;ldap_bind: 无效的凭证 (49)]

  • 772

编辑:这个问题得到了很多意见,我从来没有真正回来并提供了一个精确的、逐步的解决方案。所以我在 18 个月后回来并做到了。此解决方案适用于简单绑定,最初的问题是在尝试让 Gitlab Omnibus 安装绑定到 LDAP 服务器的上下文中提出的,但它应该适用于任何简单的 LDAP 绑定。有关我为生成解决方案所做的确切步骤,请参阅我接受的答案。以下是我的 Gitlab 版本详细信息(适用于对 Gitlab 有此问题的人):

  • 亚搏体育app 7.0.0

  • 亚搏体育app外壳1.9.6

  • GitLab API v3

  • 红宝石 2.1.1p76

  • 导轨 4.1.1

原始帖子: 我已经尝试了将近 6 个小时来让我的 Gitlab 部署通过 Windows Server 2012 Essentials Active Directory LDAP 进行身份验证。

我正在为我的 Gitlab 服务器运行 Ubuntu 14.04。它已经通过 SSSD 连接到域控制器。

Gitlab 本身使用 gitlab.rd 配置文件中的 LDAP 设置,如下所示:

# These settings are documented in more detail at
# https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example#L118
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_host'] = 'hostname of LDAP server'
gitlab_rails['ldap_port'] = 389
gitlab_rails['ldap_uid'] = 'sAMAccountName'
gitlab_rails['ldap_method'] = 'plain' # 'ssl' or 'plain'
gitlab_rails['ldap_bind_dn'] = 'CN=query user,CN=Users,DC=mycorp,DC=com'
gitlab_rails['ldap_password'] = 'query user password'
gitlab_rails['ldap_allow_username_or_email_login'] = true
gitlab_rails['ldap_base'] = 'DC=mycorp,DC=com'

我可以查询服务器,但无论我选择什么设置,我总是会收到相同的消息:

"Invalid Credentials"

我尝试使用 ldapsearch 和相同的错误消息手动查询 DC:

"ldap_bind: invalid credentials (49)

我已经在 Windows Server 2012 服务器管理器的 Active Directory 用户部分创建了我用来绑定的用户。

我已经尝试了 OU=Users 和 CN=Users 和其他用户的每一个组合,确保 AD 中所有用户的所有电子邮件地址字段都已填充,但我无法得到一个正确的响应。

是否有一种简单的方法可以返回 Active Directory 对象的所有 Bind_dn 和 Base 信息?这变得非常令人沮丧。

无论我在互联网上的哪个位置查看,所有信息都与旧版本的 Windows(ldapsearch 等)有关。我对系统方面的东西很陌生(这是我的第一份暑期实习工作)。

这是我正在使用的当前设置的示例:

gitlab_rails['ldap_bind_dn'] = 'CN=Gitlab LDAP,OU=Users,DC=servername,DC=local'
gitlab_rails['ldap_base'] = 'OU=Users,DC=servername,DC=local'

以及我一直在尝试使用 ldapsearch 为我的 Windows AD DS 找到正确绑定设置的相应示例:

ldapsearch -b "ou=Users,dc=servername,dc=local" -h 192.168.0.3 -p 389 -D "uid=Gitlab LDAP,ou=Users,dc=servername,dc=local" -w "<password>"

无济于事。我已经尝试了几十种组合。用户“gitlab”在 Windows Server 中的显示名称为“Gitlab LDAP”,带有电子邮件,全部小写。底线:是否有一些简单的方法可以单击 Windows DC 中的对象并检索正确的 LDAP 设置以使用该用户对象进行 ldap 绑定?!如果我容易情绪爆发,这就是我会做的地方。

总是相同的错误消息:“无效的凭据”

感谢您的时间和考虑,任何和所有的帮助将不胜感激。

windows
  • 2 2 个回答
  • 5466 Views

2 个回答

  • Voted
  1. Nitz
    2014-07-15T13:37:34+08:002014-07-15T13:37:34+08:00

    我知道这不是一个完整的答案,但由于声誉,我无法发表评论。
    需要考虑的几点:

    • 从 DC 本身,启动ldp.exe. 它是一个实际的 LDAP 客户端,因此如果您设法将其配置为正常工作,那么相同的参数很可能适用于 Gitlab。
      请参阅此以获得基本ldp指导,并确保您阅读了 LDP 的输出。它可能会显示您的配置所需的更多信息。
    • 在 LDAP 访问方面,Windows Server 的版本并不重要——可能只在与加密相关的问题上。
    • ldap_uid可能期望表单DOMAIN\UserName或CN=UserCN,DN=Location,DC=Bla(DistinguishedName)。
    • 考虑检查您尝试连接的 DC 的 Windows 事件日志。它可能包含有关连接失败原因的一些信息。在“安全”日志中尝试“审核失败”

    发回更多信息,也许我可以提供帮助!

    • 1
  2. Best Answer
    Aubrey Robertson
    2016-05-04T09:47:21+08:002016-05-04T09:47:21+08:00

    注意:鳄鱼 (<>) 大括号将从值中删除,并且仅用于指示通用值。

    1. 在 DC 上创建一个用户以用于 LDAP 绑定。这是我的上下文的示例: Gitlab LDAP 用户属性

      我认为我并没有真正改变任何东西,但我确实在Account选项卡下进行了设置,以便User cannot change password并且Password never expires。注意我从用户电子邮件的域末尾编辑了 URL。对于这些说明的其余部分,我将使用<Domain>.<local>,但此 URL 可以是与您的 DC 的实际 FQDN 相对应的任何内容(例如 microsoft.com)。

    2. 在 DC 本身(最好)或网络连接和授权的机器上,以提升的权限运行LDP.exe 。在Connection下,在端口 389(或将其转发到的任何端口,389 是默认 LDAP 端口)输入 DC 或 localhost(取决于您从哪里连接)的 FQDN。连接后,您应该会看到许多行,但第一行将是:

      configurationNamingContext: CN=Configuration,DC=<Domain>,DC=<local>

      记下这些值(DC 值对应于您的 FQDN,稍后将在 LDAP 搜索中使用)。

    3. 连接后,我们将与该用户执行简单绑定。单击连接选项卡并选择绑定选项。像这样填写选项(使用您在第一步中创建的用户信息):

      在此处输入图像描述

      如果成功,您应该会收到一条消息Authenticated as: <Domain>\<username>

    4. 使用 ldp.exe 成功绑定到 DC 后,在“浏览”选项卡下单击“搜索”选项:

      搜索选项

      在 Base DN 字段中,您将复制连接到服务器时记录的确切 DC URL 值。因此,如果显示连接,CN=Configuration,DC=microsoft,DC=com;那么您将dc=microsoft,dc=com输入 Base DN 字段。

      我使用的过滤器只是对我之前创建的用户名的通配符搜索。在属性字段中,我使用了以下值:

      objectClass;name;description;canonicalName;lDAPDisplayName

    5. 单击运行以执行搜索。产生以下输出:

      在此处输入图像描述

      标记为 RED 的这一行是我用来在我的 gitlab.rb 配置中绑定的值(请注意,此文件已更改/编辑以反映此处的示例)。当我登录 Gitlab 时,这非常有效:

      在此处输入图像描述

      这些是我采取的步骤。我很确定那些拥有更多管理能力的人可能会修改这种方法以找出他们想要的任何东西。(特别感谢Nitz为我指明了正确的方向)。

    最后:根据您使用的 Windows 版本,您的客户端可能会使用 SAMAccountName 或 UserPrincipleName 属性,正如Ryan Bolger在 Nitz 的另一个答案的评论中提到的那样。可以在此处找到有关此属性的更多信息。

    • 0

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve