关于 GitHub Enterprise Server 的用户预配
如果对 你的 GitHub Enterprise Server 实例 使用 SAML 单一登录 (SSO),则可以配置 SCIM 以自动创建或暂停用户帐户,并且在 IdP 上分配或取消分配应用程序时授予对实例的访问权限。 有关 SCIM 的详细信息,请参阅 IETF 网站上的跨域身份管理系统:协议 (RFC 7644)。
如果不使用 SCIM 配置用户预配,则向用户分配或取消分配应用程序时,IdP 将不会自动与 GitHub Enterprise Server 通信。 如果没有 SCIM,GitHub Enterprise Server 会在有人第一次导航到 GitHub Enterprise Server 并通过 IdP 进行身份验证来登录时使用 SAML 实时 (JIT) 预配来创建用户帐户。
若要为企业配置预配,必须在 GitHub Enterprise Server 上启用预配,然后在标识提供者上安装和配置预配应用程序,或使用 GitHub 的 SCIM REST API 终结点手动配置 SCIM 预配。
支持的身份提供程序
GitHub 合作伙伴与身份管理系统的一些开发人员合作,提供与 GitHub Enterprise Server 的“铺好道路”集成。 为了简化配置并确保获得全面支持,请使用单个合作伙伴 IdP 进行身份验证和预配。****
合作伙伴标识提供者
以下 IdP 为合作伙伴 IdP。 它们提供一个应用程序,可用于配置 SAML 身份验证和 SCIM 预配。
- Microsoft Entra ID
- Okta
- PingFederate (公共预览版)
使用单个合作伙伴 IdP 进行身份验证和预配时,GitHub 支持合作伙伴 IdP 上的应用程序,还支持与 GitHub 的 IdP 集成。 同一应用程序必须同时用于 SAML 身份验证和 SCIM 预配。 在 公共预览版 中提供对 PingFederate 的支持。
使用Azure Government的 Entra ID 时,我们不支持合作伙伴应用程序。
其他身份管理系统
如果无法使用单个合作伙伴 IdP 进行身份验证和预配,则可使用其他身份管理系统或系统组合。 系统必须:
- 遵循 GitHub 的集成准则
- 使用 SAML 提供身份验证,遵循 SAML 2.0 规范
- 提供使用 SCIM 进行用户生命周期管理功能,遵守 SCIM 2.0 规范并与 GitHub 的 REST API 通信(请参阅“使用 REST API 通过 SCIM 预配用户和组”)
如何使用 SCIM 管理用户生命周期?
使用 SCIM,可从 IdP 管理用户帐户的生命周期:
- 当预配新用户时,IdP 将提示 你的 GitHub Enterprise Server 实例 创建帐户并向用户发送加入电子邮件。如果在 IdP 中为应用程序分配一个组,则 IdP 将为该组的所有成员预配帐户。
- 在 IdP 上更新与用户标识关联的信息时,IdP 将在 GitHub 上更新用户的帐户。
- 从 IdP 应用程序取消分配用户或停用 IdP 上的用户帐户时,IdP 将与 GitHub 进行通信,以使任何会话失效并禁用该成员的帐户。 已禁用帐户的信息会保留,其用户名将更改为原始用户名的哈希。
- 如果将用户重新分配给 IdP 应用程序或在 IdP 上重新激活其帐户,则将重新激活该用户帐户,并将还原用户名。
若要配置团队和组织成员身份、仓库访问权限以及权限,可以使用 IdP 上的组。 有关详细信息,请参阅“使用标识提供者组管理团队成员身份”。
启用 SCIM 后,将无法再直接在 GitHub Enterprise Server 上删除、暂停或升级 SCIM 预配的用户。 必须通过 IdP 来管理这些流程。如果你的 IdP 出现问题,你需要直接管理某个用户,则必须使用 SCIM REST API 在你的设备上管理用户标识(请参阅“使用 REST API 通过 SCIM 预配用户和组”)。
要查看已暂停的成员,请前往企业设置中的“Suspended Members”选项卡。 在 GitHub Enterprise Server 上启用 SCIM 时,该页面将会显示。
- 在 GitHub Enterprise Server 的右上角,单击你的个人资料头像,然后单击“Enterprise settings”****。
- 在页面顶部,单击 “People”
- 单击“Suspended Members”****。
启用 SCIM 时会发生什么情况?
如果你当前使用的是 SAML SSO,并计划启用 SCIM,则应注意启用后 GitHub Enterprise Server 上现有的用户帐户将会发生的变化。
- 已通过 SAML 映射的现有用户将无法登录,直到其标识通过 SCIM 进行预配****。
- 通过内置身份验证创建的现有用户,只有在仍启用“内置身份验证”的情况下才能登录********。
- GitHub Enterprise Server 将不再为用户存储 SAML 映射。 用户预配完成后,将改为存储 SCIM 标识。
- 用户的
https://HOSTNAME/users/USER/security站点管理员页面将不再显示“SAML authentication”部分。 由于 SCIM 启用后不再在 SAML 身份验证中评估这些信息,因此也将无法查看或更新之前显示在该部分的 SAML NameID 映射。 - 当实例收到 SCIM 请求时,系统会通过 比较 SCIM 的
userName属性值与 GitHub Enterprise Server 用户名来匹配现有用户。 这意味着,如果这两个值匹配,现有的 GitHub Enterprise Server 用户帐户(无论最初是作为本地用户帐户创建还是通过 SAML JIT 预配创建)都可以转换为 SCIM 关联的用户帐户。- 如果存在用户名匹配的用户帐户,GitHub Enterprise Server 会将 SCIM 标识关联到该用户帐户。
- 如果存在匹配用户名的用户帐户,GitHub Enterprise Server 将创建新用户帐户并关联到该 SCIM 标识。
- 如果 GitHub 成功将通过 SAML 认证的用户与现有用户帐户匹配,但电子邮件地址、名字或姓氏等帐户详细信息不匹配,实例将使用 IdP 的值覆盖这些详细信息****。 除 SCIM 预配的主电子邮件以外的任何电子邮件地址也将从用户帐户中删除。
- 拥有 CLI 访问权限的企业管理员可以使用 ghe-scim-identities-csv 工具导出 SCIM 预配的用户标识的完整 CSV 文件。
SAML 身份验证期间会发生什么情况?
在 IdP 管理员授予对 你的 GitHub Enterprise Server 实例 的访问权限后,用户可以通过 IdP 进行身份验证,以使用 SAML SSO 访问 GitHub Enterprise Server。
- 当用户通过 SAML 进行身份验证时,为了将用户与 SAML 标识相关联,GitHub 会将 IdP(或已配置的另一个值)中的规范化
NameID声明与帐户的用户名进行比较。 有关规范化的详细信息,请参阅 外部身份验证的用户名注意事项。 - 如果实例上没有具有匹配用户名的帐户,用户将无法登录。
- 要进行此匹配,GitHub Enterprise Server 会将 IdP 中的 SAML
NameId声明与实例上 SCIM 预配的每个用户帐户的 SCIMuserName属性进行比较。 - 此外,对于 Entra ID,GitHub Enterprise Server 会将 SAML 请求中的对象标识符与现有的 SCIM 外部 ID 进行比较。
- 要进行此匹配,GitHub Enterprise Server 会将 IdP 中的 SAML
- 如果当前环境未使用
NameID来唯一标识用户,则站点管理员可以为实例配置自定义用户属性。 配置 SCIM 时,GitHub Enterprise Server 将遵循此映射。 有关映射用户属性的详细信息,请参阅“为企业配置 SAML 单点登录”。
如何禁用 SCIM?
有关禁用 SCIM 的不同方式的详细信息,请参阅 为用户禁用 SCIM 预配功能。
入门
要开始使用 SCIM,你将:
- 完成 配置 SCIM 预配 (用于管理用户) 中所需的初始设置(无论使用哪个 IdP)。
- 在 IdP 中配置设置。
- 如果使用合作伙伴 IdP 进行身份验证和预配,请遵循 IdP 指南。
- 否则,你将通过 REST API 设置 SCIM 集成,如“使用 REST API 通过 SCIM 预配用户和组”中所述。