跳到主要内容

使用LDAP

如果使用轻量级目录访问协议(LDAP)来集中跨应用程序的访问,则可以通过为实例配置LDAP身份验证来集成GitHub Enterprise Server。

关于GitHub Enterprise Server的LDAP身份验证

LDAP是一种用于访问和维护目录信息服务的流行应用程序协议,也是用于将第三方软件与大型公司用户目录集成的最常见协议之一。有关详细信息,请参阅“轻型目录访问协议“在维基百科上。

如果使用LDAP目录进行集中身份验证,则可以为使用GitHub Enterprise Server实例的用户配置LDAP身份验证。

注:您可以使用SAML或LDAP,但不能同时使用两者。

如果要允许对某些在外部身份验证提供商上没有帐户的人进行身份验证,可以允许对GitHub Enterprise Server实例上的本地帐户进行回退身份验证。有关详细信息,请参阅“允许提供商以外的用户进行内置身份验证."

支持的LDAP服务

GitHub Enterprise Server与这些LDAP服务集成:

  • Active Directory(Active Directory)
  • 自由IPA
  • 目录服务器企业版
  • 打开LDAP
  • 打开目录
  • 389天

LDAP的用户名注意事项

GitHub Enterprise Server规范化来自外部身份验证提供商的值,以确定GitHup Enterprise Server实例上每个新个人帐户的用户名。有关详细信息,请参阅“外部身份验证的用户名注意事项."

使用GitHub Enterprise Server实例配置LDAP

配置LDAP后,用户将能够使用其LDAP凭据登录到您的实例。当用户首次登录时,他们的配置文件名称、电子邮件地址和SSH密钥将使用目录中的LDAP属性进行设置。

当您通过管理控制台为用户配置LDAP访问时,只有当用户首次登录到您的实例时,才会使用您的用户许可证。但是,如果使用站点管理员设置手动创建帐户,则会立即对用户许可证进行说明。

警告:在GitHub Enterprise Server实例上配置LDAP之前,请确保LDAP服务支持分页结果。

  1. 从GitHub Enterprise Server上的管理帐户,在任何页面的右上角,单击.
  2. 如果您还没有进入“站点管理员”页面,请在左上角单击站点管理员.
  3. 在“站点管理员”侧栏,单击管理控制台.
  4. 在“设置”侧栏中,单击身份验证.
  5. 在“身份验证”下,选择LDAP(LDAP).
  6. (可选)要允许外部身份验证系统上没有帐户的用户使用内置身份验证登录,请选择允许内置身份验证。有关详细信息,请参阅“允许对提供商之外的用户进行内置身份验证."
  7. 添加配置设置。

LDAP属性

使用这些属性完成GitHub Enterprise Server实例的LDAP配置。

属性名称必需说明
主机LDAP主机,例如。ldap.example.com10.0.0.30。如果主机名只能从您的内部网络获得,您可能需要首先配置GitHub Enterprise Server实例的DNS,以便它可以使用您的内部名称服务器解析主机名。
端口主机LDAP服务正在侦听的端口。示例包括:389和636(用于LDAPS)。
加密用于保护与LDAP服务器的通信的加密方法。示例包括普通(无加密)、SSL/LDAPS(从一开始就加密)和StartTLS(连接后升级到加密通信)。
域搜索用户查找登录的其他用户以允许身份验证的LDAP用户。这通常是专门为第三方集成创建的服务帐户。使用完全限定的名称,例如cn=Administrator,cn=Users,dc=示例,dc=com。使用Active Directory,您还可以使用[域]\[用户名]语法(例如。WINDOWS\管理员)用于具有Active Directory的域搜索用户。
域搜索密码域搜索用户的密码。
管理员组登录设备时,此组中的用户将升级为站点管理员。如果不配置LDAP管理员组,则登录到设备的第一个LDAP用户帐户将自动升级为站点管理员。
域基础完全合格的可分辨名称要搜索用户和组的LDAP子树的(DN)。每个组都必须与属于它的用户定义在同一个域基中。如果指定了受限制的用户组,则只有属于这些组的用户才会在作用域中。我们建议您指定LDAP目录树的顶层作为域基础,并使用受限用户组来控制访问。您可以配置多个域基。然而,GitHub Enterprise Server会根据每个配置的域库顺序搜索用户和组成员身份,因此配置多个域库会增加执行的LDAP查询数。为了确保实例的性能和稳定性,我们建议您配置的域基础不要超过三个。
受限用户组如果指定,则只允许这些组中的用户登录。您只需指定组的通用名称(CN)。如果未指定组,全部的指定域基础范围内的用户将能够登录到您的GitHub Enterprise Server实例。您可以配置多个受限用户组。但是,每个组都会增加GitHub Enterprise Server为每个用户执行的组成员身份LDAP查询数。为了防止身份验证超时和同步性能问题,建议您配置不超过三个组。
用户ID标识尝试身份验证的LDAP用户的LDAP属性。建立映射后,用户可以更改其GitHub Enterprise Server用户名。此字段应为sAMA帐户名称适用于大多数Active Directory安装,但可能是液体用于其他LDAP解决方案,如OpenLDAP。默认值为液体.
配置文件名称将显示在用户的GitHub Enterprise Server配置文件页面上的名称。除非启用LDAP Sync,否则用户可以更改其配置文件名称。
电子邮件用户的GitHub Enterprise Server帐户的电子邮件地址。
SSH密钥附加到用户GitHub Enterprise Server帐户的公共SSH密钥。密钥必须为OpenSSH格式。
GPG键附加到用户GitHub Enterprise Server帐户的GPG密钥。
禁用Git操作的LDAP身份验证如果选中,关闭用户使用LDAP密码验证Git操作的能力。
启用LDAP证书验证如果选中,打开LDAP证书验证。
同步如果选中,打开LDAP同步。

禁用Git操作的密码身份验证

为了强制使用个人访问令牌或SSH密钥进行Git访问,这有助于防止LDAP身份验证请求过载服务器,您可以禁用Git操作的密码身份验证。

我们建议使用此设置,因为响应较慢的LDAP服务器,尤其是由于轮询导致的大量请求,是性能问题和停机的常见原因。

要禁用Git操作的密码身份验证,请选择禁用Git操作的用户名和密码身份验证在LDAP设置中。

选择此选项后,如果用户试图通过命令行使用密码进行Git操作,则会收到一条错误消息,其中显示:,Git操作不允许进行密码身份验证。您必须使用个人访问令牌。

启用LDAP证书验证

您可以通过启用LDAP证书验证来验证与TLS一起使用的LDAP服务器证书。

要启用LDAP证书验证,请选择启用LDAP证书验证在LDAP设置中。

选择此选项后,将验证证书以确保:

  • 如果证书包含至少一个使用者备用名称(SAN),则其中一个SAN与LDAP主机名匹配。否则,通用名称(CN)将与LDAP主机名相匹配。
  • 证书未过期。
  • 证书由受信任的证书颁发机构(CA)签名。

启用LDAP同步

通过将GitHub Enterprise server用户和团队成员与已建立的LDAP组同步,可以从LDAP服务器为用户建立基于角色的访问控制。有关详细信息,请参阅“创建团队."

LDAP同步不会在GitHub Enterprise Server实例上创建用户帐户。有关详细信息,请参阅“查看和创建LDAP用户."

注:对超过1499个成员的组使用LDAP同步可能会导致团队成员身份同步失败。

如果您专门使用Active Directory,当为团队或管理控制台中配置的LDAP组超过1500个成员时,用户查找和团队同步可能会失败,原因是最大值范围Active Directory中的限制。作为一种解决方法,您可以使用包含少于1500个成员的Active Directory组,也可以与Active Directory管理员一起增加最大值范围域控制器的值。有关更多信息,请参阅使用Ntdsutil.exe在Active Directory中查看和设置LDAP策略在Microsoft学习中。

如果需要帮助确定是否修改最大值范围是适用于Active Directory环境的正确方法,请与Microsoft支持部门联系。

要启用LDAP Sync,请在LDAP设置中选择同步.

要为所有用户和所有团队选择同步间隔,请单击下拉菜单。然后选择每1小时,每4小时,或每24小时.

要从LDAP自动同步某些属性,请在“同步用户电子邮件、SSH和GPG密钥”下单击同步电子邮件,同步SSH密钥、和/或同步GPG密钥.

启用LDAP同步后,同步作业将按指定的时间间隔运行,以对每个用户帐户执行以下操作:

  • 如果您已经允许身份提供者之外的用户使用内置身份验证,并且该用户正在使用内置身份认证,请转到下一个用户。
  • 如果用户不存在LDAP映射,请尝试将用户映射到目录中的LDAP条目。如果用户无法映射到LDAP条目,请挂起该用户,然后转到下一个用户。
  • 如果存在LDAP映射,并且目录中缺少相应的LDAP条目,请挂起该用户并转到下一个用户。
  • 如果相应的LDAP条目已标记为禁用,并且用户尚未挂起,请挂起该用户并转到下一个用户。
  • 如果相应的LDAP条目未标记为禁用,并且用户被挂起,并且重新激活挂起的用户在管理中心中启用,取消暂停用户。
  • 如果实例上配置了一个或多个受限用户组,并且相应的LDAP条目不在其中一个组中,请挂起该用户。
  • 如果在实例上配置了一个或多个受限用户组,则相应的LDAP条目位于其中一个组中,并且重新激活挂起的用户在管理中心中启用,取消暂停用户。
  • 如果相应的LDAP条目包含名称属性,更新用户的配置文件名称。
  • 如果相应的LDAP条目位于Administrators组中,请将用户升级为站点管理员。
  • 如果相应的LDAP条目不在Administrators组中,请将用户降级为普通帐户,除非该帐户已挂起。被挂起的管理员将不会降级,并将保留在“站点管理员”和“企业所有者”页面上。
  • 如果为电子邮件定义了LDAP用户字段,请将用户的电子邮件设置与LDAP条目同步。设置第一个LDAP邮件条目作为主要电子邮件。
  • 如果为SSH公钥定义了LDAP用户字段,请将用户的公共SSH密钥与LDAP条目同步。
  • 如果为GPG密钥定义了LDAP用户字段,请将用户的GPG密钥与LDAP条目同步。

注释:只有使用Active Directory和用户帐户控制属性存在并用标记账户禁用。Active Directory的某些变体(如AD LDS和ADAM)不支持用户帐户控制属性。

同步作业还将按指定的时间间隔运行,以便对映射到LDAP组的每个团队执行以下操作:

  • 如果团队的相应LDAP组已被删除,请从团队中删除所有成员。

  • 如果LDAP成员条目已从LDAP组中删除,请从组中删除相应的用户。如果用户不再是组织中任何团队的成员,也不是组织的所有者,请将该用户从组织中删除。如果用户因此失去了对任何存储库的访问权限,请删除用户拥有的这些存储库的所有私有分支。

    注:如果用户是组织的所有者,LDAP Sync不会从该组织中删除用户。另一个组织所有者需要手动删除该用户。

  • 如果LDAP成员条目已添加到LDAP组中,请将相应的用户添加到团队中。如果用户因此重新获得对任何存储库的访问权限,请恢复由于用户在过去90天内失去访问权限而删除的存储库的所有私有分支。

作为优化配置的一部分,LDAP Sync不会传输您的嵌套团队结构。要创建子团队和父团队关系,必须手动重新创建嵌套团队结构,并将其与相应的LDAP组同步。有关详细信息,请参阅“创建团队"

安全警告:

启用LDAP同步后,站点管理员和组织所有者可以在LDAP目录中搜索要将团队映射到的组。

这有可能向承包商或其他无特权用户披露敏感的组织信息,包括:

  • 存在对可见的特定LDAP组域搜索用户.
  • 具有GitHub Enterprise Server用户帐户的LDAP组成员,这是在创建与该LDAP组同步的团队时披露的。

如果不希望披露此类信息,您的公司或组织应限制配置的域搜索用户在管理控制台中。如果无法限制,请访问联系我们GitHub企业支持.

支持的LDAP组对象类

GitHub Enterprise Server支持这些LDAP组对象类。可以嵌套组。

  • 组名
  • 唯一名称组
  • posix集团

查看和创建LDAP用户

使用LDAP时,当有人首次使用LDAP凭据成功登录时,您的实例会创建一个用户帐户。或者,您可以手动设置用户帐户。

您可以查看有权访问您的实例并配置新用户的LDAP用户的完整列表。

  1. 登录到您的GitHub Enterprise Server实例http://HOSTNAME/login.
  2. 从GitHub Enterprise Server上的管理帐户,在任何页面的右上角,单击.
  3. 如果您还没有进入“站点管理员”页面,请在左上角单击站点管理员.
  4. 在左侧边栏中,单击LDAP用户.
  5. 要搜索用户,请键入完整或部分用户名,然后单击搜索。现有用户将显示在搜索结果中。如果用户不存在,请单击创建设置新用户帐户。

更新LDAP帐户

除非LDAP同步已启用,对LDAP帐户的更改不会自动与GitHub Enterprise Server同步。

手动同步LDAP帐户

  1. 登录到您的GitHub Enterprise Server实例http://HOSTNAME/login.
  2. 从GitHub Enterprise Server上的管理帐户,在任何页面的右上角,单击.
  3. 如果您还没有进入“站点管理员”页面,请在左上角单击站点管理员.
  4. 在“搜索用户、组织、团队、存储库、注册表和应用程序”下,在文本字段中键入用户的名称。
  5. 在文本字段的右侧,单击搜索.
    “站点管理员”设置的“搜索”页面截图。搜索用户的按钮(标有“搜索”)以橙色轮廓突出显示。
    • 如果找不到精确的帐户名匹配,请在“搜索结果-帐户”下的“模糊匹配”部分中,单击要管理的用户的名称。
      “站点管理员”设置中搜索结果的屏幕截图。在“模糊匹配”部分中,示例用户名以橙色轮廓突出显示。
  6. 查看站点管理页面中的用户详细信息,确认您已确定正确的用户。
    站点管理员帐户概述页面的屏幕截图。
  7. 在页面的右上角,单击 行政.
    用户或存储库的“站点管理员”页面标题的屏幕截图。“管理员”选项卡以橙色轮廓突出显示。
  8. 在“LDAP”下,单击立即同步使用LDAP服务器中的数据手动更新帐户。

你也可以使用API触发手动同步.

撤消对GitHub Enterprise Server实例的访问

如果LDAP同步已启用,删除用户的LDAP凭据将在下次同步运行后挂起其帐户。

如果LDAP同步如果启用,则必须在删除LDAP凭据后手动挂起GitHub Enterprise Server帐户。有关详细信息,请参阅“暂停和取消暂停用户".

关于LDAP日志记录

LDAP的日志事件显示在GitHub Enterprise Server实例的系统日志日志中。您将在以下日志中找到与LDAP操作相关的事件吉特胡布独角兽github-resqued公司。有关详细信息,请参阅“关于系统日志."

GitHub Enterprise Server上LDAP的限制

GitHub Enterprise Server LDAP身份验证超时设置为10秒。这意味着,对于登录GitHub Enterprise Server的LDAP用户,用户身份验证和组成员身份查询所需的所有LDAP查询(在管理控制台中配置管理员和受限用户组时)必须在10秒内成功完成。GitHub Enterprise Server目前不支持延长此10秒LDAP身份验证超时,因为这可能会对设备上的其他服务产生负面影响,并导致性能不佳或意外中断。我们建议限制GitHub Enterprise Server和LDAP服务器之间的网络延迟,以帮助防止身份验证超时。