Skip to main content

关于在 GitHub Enterprise Server 上使用 SCIM 进行用户预配

了解如何使用 SCIM 你的 GitHub Enterprise Server 实例管理用户帐户的生命周期。

关于 GitHub Enterprise Server 的用户预配

如果您对 你的 GitHub Enterprise Server 实例 使用 SAML 单点登录(SSO),则可将 SCIM 配置为在 IdP 上分配或取消分配该应用程序时,自动创建或停用用户帐户,并向您的实例授予访问权限。 有关 SCIM 的详细信息,请参阅 IETF 网站上的跨域身份管理系统:协议 (RFC 7644)

如果您未使用 SCIM 配置用户预配,则当您将该应用程序分配给用户或取消分配给用户时,您的 IdP 不会自动与 GitHub Enterprise Server 通信。 如果没有 SCIM,当用户首次访问 GitHub Enterprise Server 并通过你的 IdP 进行身份验证后登录时,GitHub Enterprise Server 会使用 SAML 即时 (JIT) 预配创建用户账户。

若要为您的企业配置预配,必须先在 GitHub Enterprise Server 上启用预配,然后执行以下任一操作:在您的 IdP 上安装并配置预配应用程序,或者使用 GitHub 的 SCIM REST API 端点手动配置 SCIM 预配。

支持的身份提供程序

GitHub 合作伙伴与身份管理系统的一些开发人员合作,提供与 GitHub Enterprise Server 的“铺好道路”集成。 为了简化配置并确保获得全面支持,请使用单个合作伙伴 IdP 进行身份验证和预配。****

合作伙伴标识提供者

以下 IdP 为合作伙伴 IdP。 它们提供一个应用程序,可用于配置 SAML 身份验证和 SCIM 预配。

  • Microsoft Entra ID
  • Okta
  • PingFederate (公开预览)

当您使用单个合作伙伴 IdP 同时进行身份验证和预配时,GitHub 为合作伙伴 IdP 上的应用程序以及该 IdP 与 GitHub 的集成提供支持。 同一应用程序必须同时用于 SAML 身份验证和 SCIM 预配。 有关 PingFederate 的支持信息可参见 公开预览.

使用Azure 政府的 Entra ID 时,我们不支持合作伙伴应用程序。

其他身份管理系统

如果无法使用单个合作伙伴 IdP 进行身份验证和预配,则可使用其他身份管理系统或系统组合。 系统必须:

  • 遵循 GitHub“集成准则”
  • 使用 SAML 提供身份验证,遵循 SAML 2.0 规范
  • 使用 SCIM 提供用户生命周期管理,遵循 SCIM 2.0 规范并与 's REST API 通信GitHub(请参阅 使用 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 ServerSCIM 时,将显示此页面。

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料头像,然后单击“Enterprise settings”****。
  2. 在页面顶部,单击“ 人员”。
  3. 单击“Suspended Members”****。

启用 SCIM 时会发生什么情况?

如果当前使用 SAML SSO,并且要启用 SCIM,则应注意启用 SCIM 后现有用户帐户 GitHub Enterprise Server 会发生什么情况。

  • 已通过 SAML 映射的现有用户将无法登录,直到其标识通过 SCIM 进行预配****。
  • 通过内置身份验证创建的现有用户,只有在仍启用“内置身份验证”的情况下才能登录********。
  • GitHub Enterprise Server 将不再为用户存储 SAML 映射。 用户预配完成后,将改为存储 SCIM 标识。
  • 用户的 https://HOSTNAME/users/USER/security 站点管理员页面将不再显示“SAML authentication”部分。 由于 SCIM 启用后不再在 SAML 身份验证中评估这些信息,因此也将无法查看或更新之前显示在该部分的 SAML NameID 映射。
  • 当实例收到 SCIM 请求时, 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 预配的每个用户账户的 SCIM userName 属性进行比较。
    • 此外,对于 Entra ID,GitHub Enterprise Server会将 SAML 请求中的对象标识符与现有的 SCIM 外部 ID 进行比较。
  • 如果当前环境未使用 NameID 来唯一标识用户,则站点管理员可以为实例配置自定义用户属性。 GitHub Enterprise Server 配置 SCIM 时,将遵循此映射。 有关映射用户属性的详细信息,请参阅“为企业配置 SAML 单点登录”。

如何禁用 SCIM?

有关禁用 SCIM 的不同方式的详细信息,请参阅 为用户禁用 SCIM 预配功能

入门

要开始使用 SCIM,你将:

  1. 完成 为企业托管用户以管理用户 中所需的初始设置(无论使用哪个 IdP)。
  2. 在 IdP 中配置设置。