Skip to main content

排除企业的标识和访问管理故障

查看企业的标识和访问管理的常见问题和解决方案。

查看用户的外部身份信息

如果用户无法使用 SAML 成功进行身份验证,则查看链接到 GitHub 上用户帐户的单一登录标识的相关信息可能会很有帮助。 有关详细信息,请参阅“查看和管理用户对企业的 SAML 访问”。

用户名冲突

如果你的企业使用 Enterprise Managed Users,GitHub 会对标识提供者 (IdP) 在 SCIM API 调用中发送的 SCIM userName 属性值进行规范化处理,以便在 GitHub 上创建每个人的用户名。 如果多个帐户被规范化为同一个 GitHub 用户名,则会发生用户名冲突,并且只会创建第一个用户帐户。 有关详细信息,请参阅“外部身份验证的用户名注意事项”。

切换身份验证配置时出错

如果在不同身份验证配置之间切换时遇到问题,例如将 SAML SSO 配置从组织更改为企业帐户或从 SAML 迁移到 Enterprise Managed Users 的 OIDC,请确保遵循更改操作的最佳做法。

当 SSO 不可用时访问企业

当标识提供者 IdP 的配置错误或问题阻止你使用 SSO 时,可以使用恢复代码访问你的企业。 有关详细信息,请参阅“标识提供者不可用时访问企业帐户”。

SCIM 预配错误

为避免超过 GitHub 的速率限制,每小时为 IdP 上的 SCIM 集成分配的用户不要超过 1,000 个。 如果使用组将用户分配到 IdP 应用程序,则每小时向每个组添加的用户不要超过 1,000 个。 如果超出这些阈值,预配用户的尝试可能会失败并出现“速率限制”错误。 可以查看 IdP 日志,确认尝试的 SCIM 预配或推送操作是否由于速率限制错误而失败。 对失败的预配尝试的响应将取决于 IdP。

Microsoft Entra ID(以前称为 Azure AD)将在下一个 Entra ID 同步周期内自动重试 SCIM 预配尝试。 Entra ID 的默认 SCIM 预配间隔为 40 分钟。 有关此重试行为的详细信息,请参阅 Microsoft 文档,如果需要其他协助,也可联系 Microsoft 支持。

Okta 将通过手动 Okta 管理员干预重试失败的 SCIM 预配尝试。 有关 Okta 管理员如何为特定应用程序重试失败任务的详细信息,请参阅 Okta 文档或联系 Okta 支持。

在 具有托管用户的企业 中,SCIM 通常会正常运行,但个别用户的 SCIM 预配尝试有时会失败。 在将帐户预配到 GitHub 之前,用户将无法登录。 这些个别的 SCIM 用户设置失败会导致 HTTP 400 状态代码,通常由用户名规范化或用户名冲突问题引起,也就是企业中已有另一个用户具有相同规范化用户名。 请参阅 外部身份验证的用户名注意事项

SAML 身份验证错误

如果用户在尝试使用 SAML 进行身份验证时遇到错误,请参阅 SAML 身份验证

冲突的 SAML 标识错误

当用户首次尝试向 SAML 标识提供者 (IdP) 进行身份验证以访问 GitHub 组织或企业时,可能会收到以下错误消息。

GitHub 用户帐户 [GitHub 用户名] 当前已取消链接。 但你正在尝试使用 [IdP 用户帐户] SAML 标识(已链接到 [组织/企业] 中的其他 GitHub 用户帐户)向标识提供者进行身份验证。 请联系 GitHub [组织/企业] 所有者之一获取帮助。

如果 IdP 为 Entra ID,错误消息将包含 Entra ID 中的链接标识的 User Object ID,GitHub 将其引用为 External ID

显示此错误消息的原因是外部标识只能链接到组织或企业中的单个 GitHub 用户帐户。

标识具有冲突标识的用户

当用户报告遇到此错误,你可以通过以下步骤来标识存在冲突的帐户。

  1. 使用 GitHub GraphQL API 确定链接到冲突的外部标识的是哪个用户。
    • 如果 SAML 是在 GitHub 组织级别配置的:须由组织所有者在组织级别查询现有外部标识,并按用户在进行身份验证时所用的导致此错误的 IdP 帐户的 SAML NameID 来筛选这些标识。 请参阅 platform-samples 存储库中的 org-saml-identities-filtered-by-nameid-username.graphql 示例。
    • 如果 SAML 是在 GitHub 企业级别配置的:须有企业所有者在企业级别查询现有外部标识,并按用户在进行身份验证时所用的导致此错误的 IdP 帐户的 SAML NameID 来筛选这些标识。 请参阅 platform-samples 存储库中的 enterprise-saml-identities-filtered-by-nameid.graphql 示例。
  2. 如果标识了与冲突的外部标识关联的 GitHub 用户,若要确认该用户是否仍是该企业中及其内的任何组织中的有效用户,可由企业所有者按照 查看企业中的人员 中的步骤操作。

解决冲突

如果已按相关步骤标识冲突帐户,根据所获得的发现,有不同的解决方法可选择。 如果在尝试执行这些步骤时遇到问题或有疑问,可以使用 GitHub 支持门户 开立 GitHub 支持票证。

冲突的 GitHub 用户不再需要访问权限

如果存在与冲突的外部标识关联的但不再需要 GitHub 组织或企业访问权限**** 的 GitHub 用户帐户,请删除其成员身份。 如果正确删除了用户,应会同时删除其链接的 SAML 标识以及组织级别的 SCIM 标识(如果存在)。

  • 如果使用 SCIM 预配来管理组织成员身份,则需要通过 SCIM 从 IdP 取消相关用户的预配,而不执行 GitHub 上的步骤。 否则,用户链接的 SAML 和 SCIM 标识将仍保留在组织中,这可能会继续导致相同的错误。
  • 如果未使用 SCIM 预配来管理组织成员身份,请参阅 从组织中删除成员删除企业成员。 请确保同时从 IdP 中的组织或企业的 GitHub 应用中删除相关用户的访问权限。

若要确认已从 GitHub 组织中成功删除某用户的 SAML 或 SCIM 标识,请参阅 排除组织的标识和访问管理故障

冲突的 GitHub 用户仍需要访问权限

如果存在与冲突的外部标识关联的 GitHub 用户账户,且该用户仍需要访问**** 组织或企业,你需要更改该用户账户链接的标识****,或让收到错误的用户使用不同的 IdP 标识进行身份验证****。

  • 如果使用 SCIM 预配来管理组织的成员身份,且需要更改链接到成员 GitHub 帐户的外部标识,请从 IdP 取消预配然后重新预配相关用户(例如从应用取消分配相关用户再将其重新分配给应用)。
    • 取消预配 IdP 用户后,将从 GitHub 组织中删除其 GitHub 帐户和链接的 SAML/SCIM 标识。
    • 将 IdP 用户重新预配到 GitHub 组织时,将创建新的待处理的组织邀请和新的未链接的 SCIM 标识。 这使该用户可使用此 GitHub 用户帐户登录、通过 SAML 进行身份验证,并将新的 IdP 标识链接到其帐户。 这些步骤将有助于确保新的 SAML 和 SCIM 标识均正确链接到组织中的 GitHub 用户帐户。
  • 如果未使用 SCIM 预配来管理组织成员身份,或是在企业级别配置的 SAML,可以按以下文章之一中的步骤撤销为用户链接的外部标识:

未找到冲突的 GitHub 用户

如果没有与冲突的外部标识关联的 GitHub 用户帐户,可以撤销该外部标识。

  • 如果使用 SCIM 预配来管理组织的成员身份,请从 IdP 中删除过时的未链接的标识(例如从 IdP 应用中取消分配相关用户)。
    • 如果 IdP 不向 GitHub 发送相应的 SCIM API 调用,则标识将仍保留在组织中,这可能会继续导致相同错误。
    • 若要确认已从 GitHub 组织中成功删除某用户的 SAML 或 SCIM 标识,请参阅 排除组织的标识和访问管理故障
  • 如果未使用 SCIM 预配来管理组织的成员身份,要撤销链接的外部标识,可导航到以下 URL 之一撤销外部标识。 将 USERNAME 替换为无法登录的用户的 GitHub 用户名,或将 ORGANIZATIONENTERPRISE 替换为相应的值。
    • https://github.com/orgs/ORGANIZATION/people/USERNAME/sso
    • https://github.com/enterprises/ENTERPRISE/people/USERNAME/sso

其他阅读材料