Skip to main content

使用 LDAP

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

关于 GitHub Enterprise Server 的 LDAP 身份验证

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

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

如果想要允许对某些在你的外部验证提供程序上无帐户的人员进行身份验证,则可以允许对 your GitHub Enterprise Server instance 上的本地帐户进行回退身份验证。 有关详细信息,请参阅“允许对提供程序外部的用户进行内置身份验证”。

支持的 LDAP 服务

GitHub Enterprise Server 可与下列 LDAP 服务集成:

  • Active Directory
  • FreeIPA
  • Oracle Directory Server Enterprise Edition
  • OpenLDAP
  • Open Directory
  • 389-ds

使用 LDAP 时的用户名考量因素

GitHub Enterprise Server 规范化 外部身份验证提供程序 中的值,以确定 your GitHub Enterprise Server instance 上 每个新个人帐户的用户名。 有关详细信息,请参阅“外部身份验证的用户名注意事项”。

使用 your GitHub Enterprise Server instance 配置 LDAP

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

当您通过 管理控制台 为用户配置 LDAP 访问权限时,在用户首次登录您的实例前,用户许可不可用。 但是,如果您使用站点管理员设置手动创建帐户,用户许可将立即可用。

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

  1. 从 GitHub Enterprise Server 上的管理帐户任意页面的右上角,单击

    用于访问站点管理员设置的火箭图标的屏幕截图

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。

    “站点管理员”链接的屏幕截图 1. 在左侧边栏中,单击“管理控制台”。 左侧边栏中的 管理控制台 选项卡 1. 在左侧边栏中,单击“身份验证”。 设置侧边栏中的“身份验证”选项卡

  3. 在“身份验证”下选择“LDAP”。 选择 LDAP

  4. (可选)若要允许外部身份验证系统上没有帐户的人员使用内置身份验证登录,请选择“允许内置身份验证”。 有关详细信息,请参阅“允许对提供者外部的用户使用内置身份验证”。 选中 LDAP 内置身份验证复选框

  5. 添加您的配置设置。

LDAP 属性

使用以下属性完成 your GitHub Enterprise Server instance 的 LDAP 配置。

特性名类型说明
Host必需LDAP 主机,例如 ldap.example.com10.0.0.30。 如果主机名只能在内部网络中使用,需要先配置 your GitHub Enterprise Server instance 的 DNS,以便它可以使用内部域名服务器解析主机名。
Port必需主机的 LDAP 服务侦听的端口。 示例包括:389 和 636(适用于 LDAPS)。
Encryption必需用于确保与 LDAP 服务器之间的通信安全的加密方法。 示例包括明文(无加密)、SSL/LDAPS(从一开始就加密)和 StartTLS(在连接后升级为加密通信)。
Domain search user可选查找其他登录用户的 LDAP 用户,以允许身份验证。 这一般是一个专为第三方集成创建的服务帐户。 使用完全限定的名称,例如 cn=Administrator,cn=Users,dc=Example,dc=com。 对于 Active Directory,还可为域搜索用户使用 [DOMAIN]\[USERNAME] 语法(例如 WINDOWS\Administrator)。
Domain search password可选域搜索用户的密码。
Administrators group可选登录您的设备后,此组中的用户将被升级为站点管理员。 如果您不配置 LDAP 管理员组,则登录您的设备的第一个 LDAP 用户帐户将被自动升级为站点管理员。
Domain base必需想要搜索其用户和组的 LDAP 子树的完全限定 Distinguished Name (DN)。 您可以添加任意数量的组;不过,每个组和它所包含的用户都必须在相同的基础域中定义。 如果您指定受限的用户组,那么只有属于这些组的用户将在作用域内。 我们建议您将 LDAP 目录树的顶级指定为您的基础域,并使用受限的用户组来控制权限。
Restricted user groups可选如果指定,将仅允许这些组中的用户登录。 您只需要指定组的常用名 (CN),您可以添加任意数量的组。 如果未指定组,则指定基础域作用域中的所有用户都将可以登录你的 GitHub Enterprise Server 实例。
User ID必需标识尝试身份验证的 LDAP 用户的 LDAP 属性。 建立映射后,用户可以更改他们的 GitHub Enterprise Server 用户名。 对于大多数 Active Directory 安装来说,此字段应为 sAMAccountName,但对其他 LDAP 解决方案(例如 OpenLDAP)来说,可能是 uid。 默认值为 uid
Profile name可选将在用户的 GitHub Enterprise Server 个人资料页面上显示的姓名。 除非启用 LDAP 同步,否则用户可以更改他们的个人资料姓名。
Emails可选用户的 GitHub Enterprise Server 帐户的电子邮件地址。
SSH keys可选连接到用户的 GitHub Enterprise Server 帐户的 SSH 公钥。 密钥必须采用 OpenSSH 格式。
GPG keys可选连接到用户的 GitHub Enterprise Server 帐户的 GPG 密钥。
Disable LDAP authentication for Git operations可选如果选择,将禁止用户使用 LDAP 密码对 Git 操作进行身份验证。
Enable LDAP certificate verification可选如果选择,请启用 LDAP 证书验证。
Synchronization可选如果选择,将启用 LDAP 同步。

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

在 LDAP 设置中选择“禁用 Git 操作的用户名和密码身份验证”,为 Git 权限强制使用个人访问令牌或 SSH 密钥,这样有助于防止服务器被 LDAP 身份验证请求过载。 我们建议使用此设置,因为响应慢的 LDAP 服务器是性能问题和故障的常见来源,尤其是在遇到轮询导致的大量请求时。

为 Git 禁用 LDAP 密码身份验证的复选框

选择此选项时,如果用户通过命令行尝试为 Git 操作使用密码,他们将收到一条错误消息,内容为 Password authentication is not allowed for Git operations. You must use a personal access token.

启用 LDAP 证书验证

在 LDAP 设置中选择“启用 LDAP 证书验证”,验证用于 TLS 的 LDAP 服务器证书。

LDAP 证书验证复选框

选择此选项时,将对证书进行验证,以确保:

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

启用 LDAP 同步

注意:使用 LDAP 同步的团队限制为最多 1499 名成员。

借助 LDAP 同步,您可以将 GitHub Enterprise Server 用户和团队成员关系与建立的 LDAP 组同步。 这样,您可以在 LDAP 服务器中为用户建立基于角色的权限控制,而不用在 GitHub Enterprise Server 中手动建立。 有关详细信息,请参阅“创建团队”。

若要启用 LDAP 同步,请在 LDAP 设置中选择“同步电子邮件”、“同步 SSH 密钥”或“同步 GPG 密钥” 。

Synchronization 复选框

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

  • 如果您已允许对您的身份提供程序覆盖范围以外的用户进行内置身份验证,并且该用户使用内置身份验证,请前进到下一个用户。
  • 如果用户没有 LDAP 映射,请尝试将用户映射到目录中的 LDAP 条目。 如果用户无法映射到 LDAP 条目,请挂起该用户并前进到下一个用户。
  • 如果存在 LDAP 映射但目录中相应的 LDAP 条目缺失,请挂起该用户并前进到下一个用户。
  • 如果相应的 LDAP 条目已被标记为禁用并且该用户尚未被挂起,请挂起该用户并前进到下一个用户。
  • 如果相应的 LDAP 条目未标记为禁用,用户已被挂起,并在管理中心启用了“重新激活挂起的用户”,请取消挂起该用户。
  • 如果在实例中配置了一个或多个受限用户组,并且相应的 LDAP 条目不在其中,请挂起该用户。
  • 如果在实例上配置了一个或多个受限用户组,相应的 LDAP 条目位于其中一个组中,并在管理中心启用了“重新激活挂起的用户”,请取消挂起该用户。
  • 如果相应的 LDAP 条目包括 name 属性,请更新用户的个人资料姓名。
  • 如果相应的 LDAP 条目位于管理员组中,请将该用户升级为站点管理员。
  • 如果相应的 LDAP 条目不位于管理员组中,请将该用户降级为普通帐户。
  • 如果为电子邮件定义了一个 LDAP 用户字段,请将该用户的电子邮件设置与 LDAP 条目同步。 将第一个 LDAP mail 条目设为主电子邮件。
  • 如果为 SSH 公钥定义了一个 LDAP 用户字段,请将该用户的 SSH 公钥与 LDAP 条目同步。
  • 如果为 GPG 密钥定义了一个 LDAP 用户字段,请将该用户的 GPG 密钥与 LDAP 条目同步。

注意:只有当使用 Active Directory、userAccountControl 属性存在并用 ACCOUNTDISABLE 标记时,才可以将 LDAP 条目标记为禁用。 Active Directory 的某些变体(例如 AD LDS 和 ADAM)不支持 userAccountControl 属性。

某个同步作业也将以指定的时间间隔运行,在已经映射到 LDAP 组的每个团队上执行以下操作:

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

  • 如果已从 LDAP 组中移除 LDAP 成员条目,请从团队中移除相应的用户。 如果用户不再是组织中任何团队的成员,请从组织中删除该用户。 如果用户因此失去了任何仓库的访问权限,请删除用户在这些仓库中的任何私有分叉。

  • 如果已向 LDAP 组中添加 LDAP 成员条目,请将相应的用户添加到团队中。 如果用户因此重新获得了任何仓库的访问权限,请恢复过去 90 天内因为用户失去访问权限而被删除的仓库中的任何私有分叉。

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

安全警告:

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

这样有可能将敏感的组织信息披露给合同工或其他没有权限的用户,包括:

  • 对“域搜索用户”可见的特定 LDAP 组的存在性。
  • 具有 GitHub Enterprise Server 用户帐户的 LDAP 组的成员,如果创建与该 LDAP 组同步的团队,此信息将被披露。

如果不需要披露此类信息,您的公司或组织应在管理员控制台中限制配置的“域搜索用户”的权限。 如果无法进行此类限制,请联系 GitHub Enterprise 支持

支持的 LDAP 组对象类

GitHub Enterprise Server 支持下列 LDAP 组对象类。 可以嵌套组。

  • group
  • groupOfNames
  • groupOfUniqueNames
  • posixGroup

查看和创建 LDAP 用户

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

  1. http(s)://HOSTNAME/login 上登录 your GitHub Enterprise Server instance。 1. 从 GitHub Enterprise Server 上的管理帐户任意页面的右上角,单击

    用于访问站点管理员设置的火箭图标的屏幕截图

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。

    “站点管理员”链接的屏幕截图

  3. 在左边栏中,单击“LDAP 用户”。 LDAP 用户选项卡

  4. 若要搜索用户,请输入完整或部分用户名,然后单击“搜索”。 现有用户将显示在搜索结果中。 如果用户不存在,请单击“创建”以预配新用户帐户。 LDAP 搜索

更新 LDAP 帐户

除非启用 LDAP 同步,否则 LDAP 帐户的变更将不会自动与 GitHub Enterprise Server 同步。

手动同步 LDAP 帐户

  1. http(s)://HOSTNAME/login 上登录 your GitHub Enterprise Server instance。 1. 从 GitHub Enterprise Server 上的管理帐户任意页面的右上角,单击

    用于访问站点管理员设置的火箭图标的屏幕截图

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。

    “站点管理员”链接的屏幕截图 1. 在搜索字段中,键入用户的名称,然后单击“搜索”。 站点管理员设置搜索字段 1. 在搜索结果中,单击用户名称。 站点管理设置搜索选项 1. 在页面的右上角,单击 “管理员”。管理员工具 1. 在左侧栏中,单击“管理员”。管理员工具

  3. 在“LDAP”下,单击“立即同步”,使用 LDAP 服务器中的数据手动更新帐户。 LDAP“立即同步”按钮

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

撤消对 your GitHub Enterprise Server instance 的访问权限

如果启用 LDAP 同步,删除用户的 LDAP 凭据将在下一次同步操作后挂起他们的帐户。

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