关于 GitHub Enterprise Server 的 LDAP 身份验证
LDAP 是用于访问和维护目录信息服务的常用应用程序协议,是将第三方软件与大型公司用户目录集成的最常见协议之一。 更多信息请参阅维基百科上的“轻量级目录访问协议”。
如果使用 LDAP 目录进行集中式身份验证,则可以为使用 您的 GitHub Enterprise Server 实例 的人员配置 LDAP 身份验证。
如果要允许对外部身份验证提供程序上没有帐户的某些人员进行身份验证,则可以允许对 您的 GitHub Enterprise Server 实例 上的本地帐户进行回退身份验证。 更多信息请参阅“允许对提供程序覆盖范围以外的用户进行内置身份验证”。
支持的 LDAP 服务
GitHub Enterprise Server 可与下列 LDAP 服务集成:
- Active Directory
- FreeIPA
- Oracle Directory Server Enterprise Edition
- OpenLDAP
- Open Directory
- 389-ds
使用 LDAP 时的用户名考量� �
GitHub Enterprise Server normalizes a value from your external authentication provider to determine the username for each new personal account on 您的 GitHub Enterprise Server 实例. 更多信息请参阅“外部身份验证的用户名注意事项”。
在 您的 GitHub Enterprise Server 实例 上配置 LDAP
在您配置 LDAP 后,用户将能够使用他们的 LDAP 凭据登录您的实例。 在用户首次登录时,他们个人资料中的姓名、电子邮件地址和 SSH 密钥将使用您的目录中的 LDAP 属性进行设置。
当您通过 管理控制台 为用户配置 LDAP 访问权限时,在用户首次登录您的实例前,用户许可不可用。 但是,如果您使用站点管理员设置手动创建帐户,用户许可将立即可用。
警告:在 您的 GitHub Enterprise Server 实例 上配置 LDAP 之前,请确保您的 LDAP 服务支持分页结果。
-
从 GitHub Enterprise Server 上的管理帐户中,在任何页面的右上角,单击 。
-
如果您尚未进入“站点管理员”页面,请在左上角单击 Site admin(站点管理员)。
-
在左侧边� �中,单击 管理控制台。
-
在左侧边� �中,单击 Authentication(身份验证)。
-
在“Authentication”下,选择 LDAP。
-
(可选)若要允许在外部身份验证系统上没有帐户的用户使用内置身份验证登录,请选择 Allow built-in authentication(允许内置身份验证)。 更多信息请参阅“允许对提供程序覆盖范围以外的用户进行内置身份验证”。
-
添� 您的配置设置。
LDAP 属性
使用以下属性完成 您的 GitHub Enterprise Server 实例 的 LDAP 配置。
属性名称 | 类型 | 描述 |
---|---|---|
Host | 必选 | LDAP 主机,例如 ldap.example.com 或 10.0.0.30 。 如果主机名只能在您的内部网络中使用,您需要先配置 您的 GitHub Enterprise Server 实例 的 DNS,以便它可以使用您的内部域名服务器解析主机名。 |
端口 | 必选 | 主机的 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 设置中选择 Disable username and password authentication for Git operations,为 Git 权限强制使用个人访问令牌或 SSH 密钥,这� �有助于防止您的服务器被 LDAP 身份验证请求过载。 我们建议使用此设置,� 为响应慢的 LDAP 服务器是性能问题和故障的常见来源,尤其是在遇到轮询导致的大量请求时。
选择此选项时,如果用户通过命令行尝试为 Git 操作使用密� �,他们将收到一条错误消息,内容为 Password authentication is not allowed for Git operations. You must use a personal access token.
启用 LDAP 证书验证
在您的 LDAP 设置中选择 Enable LDAP certificate verification,验证您用于 TLS 的 LDAP 服务器证书。
选择此选项时,将对证书进行验证,以确保:
- 如果证书至少包含一个使用者可选名称 (SAN),则其中的一个 SAN 将匹配 LDAP 主机名。 否则,常用名 (CN) 将匹配 LDAP 主机名。
- 证书不会过期。
- 证书由受信任的证书颁发机构 (CA) 签名。
启用 LDAP 同步
注意:使用 LDAP 同步的团队限制为最多 1499 名成员。
借助 LDAP 同步,您可以将 GitHub Enterprise Server 用户和团队成员关系与建立的 LDAP 组同步。 这� �,您可以在 LDAP 服务器中为用户建立基于角色的权限控制,而不用在 GitHub Enterprise Server 中手动建立。 更多信息请参阅“创建团队”。
要启用 LDAP 同步,请在您的 LDAP 设置中选择 Synchronize Emails(同步电子邮件)、Synchronize SSH Keys(同步 SSH 密钥)或 Synchronize GPG Keys(同步 GPG 密钥)。
启用 LDAP 同步后,某个同步作业将以指定的时间间隔运行,在每个用户帐户上执行以下操作:
- 如果您已允许对您的身份提供程序覆盖范围以外的用户进行内置身份验证,并且该用户使用内置身份验证,请前进到下一个用户。
- 如果用户没有 LDAP � 射,请尝试将用户� 射到目录中的 LDAP 条目。 如果用户� 法� 射到 LDAP 条目,请挂起该用户并前进到下一个用户。
- 如果存在 LDAP � 射但目录中相应的 LDAP 条目缺失,请挂起该用户并前进到下一个用户。
- 如果相应的 LDAP 条目已被� �记为禁用并且该用户尚未被挂起,请挂起该用户并前进到下一个用户。
- 如果相应的 LDAP 条目未被� �记为禁用,用户已被挂起,并且已在 Admin Center 中启用 Reactivate suspended users,请取消挂起该用户。
- 如果在实例上配置了一个或多个受限制的用户组,并且相应的 LDAP 条目不在其中一个组中,请暂停该用户。
- 如果在实例上配置了一个或多个受限用户组,则相应的 LDAP 条目位于其中一个组中,并且在管理中心中启用了 Reactivate suspended users(重新激活挂起的用户) ,请取消暂停该用户。
- 如果相应的 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 组对象类。 可以嵌套组。
组
groupOfNames
groupOfUniqueNames
posixGroup
查看和创建 LDAP 用户
您可以查看具有您的实例访问权限的 LDAP 用户的完整列表和配置新用户。
-
登录到
http(s)://HOSTNAME/login
上的 您的 GitHub Enterprise Server 实例。 -
从 GitHub Enterprise Server 上的管理帐户中,在任何页面的右上角,单击 。
-
如果您尚未进入“站点管理员”页面,请在左上角单击 Site admin(站点管理员)。
-
在左侧边� �中,单击 LDAP users。
-
要搜索用户,请输入完整或部分用户名,然后单击 Search。 现有用户将显示在搜索结果中。 如果用户不存在,请单击 Create 以配置新用户帐户。
更新 LDAP 帐户
除非启用 LDAP 同步,否则 LDAP 帐户的变更将不会自动与 GitHub Enterprise Server 同步。
- 要使用新的 LDAP 管理员组,必须在 GitHub Enterprise Server 上手动升级和降级用户,以反� LDAP 中的变更。
- 要在 LDAP 管理员组中添� 或移除 LDAP 帐户,请在 GitHub Enterprise Server 上升级或降级帐户。
- 要移除 LDAP 帐户,请挂起 GitHub Enterprise Server 帐户。
手动同步 LDAP 帐户
-
登录到
http(s)://HOSTNAME/login
上的 您的 GitHub Enterprise Server 实例。 -
从 GitHub Enterprise Server 上的管理帐户中,在任何页面的右上角,单击 。
-
如果您尚未进入“站点管理员”页面,请在左上角单击 Site admin(站点管理员)。
-
在搜索字段中,输入用户的名称,然后单击 Search(搜索)。
-
在搜索结果中,单击用户名称。
-
在页面的右上角,单击 Admin(管理员)。
-
在左侧边� �中,单击 Admin(管理员)。
-
在“LDAP”下,单击 Sync now,使用您的 LDAP 服务器中的数据手动更新帐户。
您也可以使用 API 触发手动同步。
撤销 您的 GitHub Enterprise Server 实例 的权限
如果启用 LDAP 同步,移除用户的 LDAP 凭据将在下一次同步操作后挂起他们的帐户。
如果未启用 LDAP 同步,您必须在移除 LDAP 凭据后手动挂起 GitHub Enterprise Server 帐户。 更多信息请参阅“挂起和取消挂起用户”。