ユーザーの外部 ID 情報の表示
ユーザーが SAML を使用して正常に認証できない場合は、GitHub でユーザーのアカウントにリンクされているシングル サインオン ID に関する情報を表示すると便利な場合があります。 詳しくは、「Enterprise へのユーザの SAML アクセスの表示および管理」をご覧ください。
ユーザー名の競合
Enterprise が Enterprise Managed Users を使っている場合、GitHub 上に各個人のユーザー名を作成するために SCIM API 呼び出しで ID プロバイダー (IdP) により送信される SCIM userName
属性値は、GitHub によって正規化されます。 複数のアカウントが同じ GitHub のユーザー名に正規化される場合、最初のユーザー アカウントのみが作成されます。 詳しくは、「外部認証のユーザー名に関する考慮事項」をご覧ください。
認証構成を切り替えるときのエラー
SAML SSO 構成を組織からエンタープライズ アカウントに変更するときや、Enterprise Managed Users の SAML から OIDC に移行するときなど、異なる認証構成間で切り替えるときに問題が発生する場合は、変更に関するベスト プラクティスに従っていることを確認します。
SSO を使用できない場合の Enterprise へのアクセス
構成エラーまたは ID プロバイダー (IdP) の問題によって SSO を使用できない場合は、回復コードを使用して Enterprise にアクセスできます。 詳しくは、「ID プロバイダーが使用できない場合の Enterprise アカウントへのアクセス」をご覧ください。
SCIM プロビジョニング エラー
GitHub のレート制限を超えないようにするには、IdP の SCIM 統合に 1 時間あたり 1,000 人を超えるユーザーを割り当てないでください。 グループを使って IdP アプリケーションにユーザーを割り当てる場合、1 時間あたり 1,000 人を超えるユーザーを各グループに追加しないでください。 これらのしきい値を超えると、ユーザーをプロビジョニングしようとすると、"レート制限" エラーが発生して失敗する可能性があります。 試した SCIM プロビジョニングまたはプッシュ操作がレート制限エラーに起因して失敗したかは IdP ログで確認できます。 プロビジョニング失敗に対する反応は IdP によって異なります。
Microsoft Entra ID (旧称 Azure AD) は、次の Entra ID 同期サイクル中に自動的に SCIM プロビジョニングを再試行します。 Entra ID の既定の SCIM プロビジョニング間隔は 40 分です。 この再試行動作の詳細については、Microsoft ドキュメントを参照してください。さらにサポートが必要な場合は、Microsoft サポートにお問い合わせください。
Okta は、SCIM プロビジョニングに失敗した場合、Okta 管理者の手動介入により再試行します。 Okta 管理者が特定のアプリケーションに対して失敗したタスクを再試行する方法の詳細については、Okta ドキュメントをご覧いただくか、さらなるサポートが必要であれば Okta サポートまでお問い合わせください。
SCIM が全般的に正常に機能している マネージド ユーザーを含む Enterprise では、個々のユーザーの SCIM プロビジョニングの試行が失敗することがあります。 ユーザーは、アカウントが GitHub にプロビジョニングされるまでサインインできません。 これらの個々の SCIM ユーザー プロビジョニング エラーにより、HTTP 400 状態コードが発生します。これらのエラーは、通常、ユーザー名の正規化またはユーザー名の競合に関する問題が原因で発生します。これは、同じ正規化されたユーザー名を持つ別のユーザーが既に Enterprise に存在するということです。 「外部認証のユーザー名に関する考慮事項」をご覧ください。
SAML 認証エラー
ユーザーが SAML で認証を行おうとするとエラーが発生する場合は、「SAML認証」をご覧ください。
競合する SAML ID エラー
ユーザーが GitHub organization または Enterprise に初めてアクセスする際に SAML ID プロバイダー (IdP) の認証を受けようとすると、次のエラー メッセージが表示される場合があります。
Your GitHub user account [GitHub username] is currently unlinked. However, you are attempting to authenticate with your Identity Provider using [IdP user account] SAML identity which is already linked to a different GitHub user account in the [organization/enterprise]. Please reach out to one of your GitHub [organization/enterprise] owners for assistance.
IdP が Entra ID である場合、エラー メッセージには Entra ID のリンクされた ID の User Object ID
(GitHub では、External ID
と呼ばれます) が含まれます。
このエラー メッセージが発生するのは、外部 ID が organization または Enterprise 内の 1 つの GitHub ユーザー アカウントにのみリンクできるためです。
競合する ID を持つユーザーを特定する
ユーザーからこのエラーについて連絡があった場合は、以下の手順を実行して競合するアカウントを特定できます。
- GitHub GraphQL API を使って、競合する外部 ID にリンクされているユーザーを特定します。
- SAML が GitHub organization レベルで構成されている場合: organization 所有者は、organization レベルで既存の外部 ID を照会し、このエラーが発生したときにユーザーが認証に使っていた IdP アカウントの SAML
NameID
でフィルター処理する必要があります。platform-samples
リポジトリの org-saml-identities-filtered-by-nameid-username.graphql サンプルを参照してください。 - SAML が GitHub Enterprise レベルで構成されている場合: Enterprise 所有者は、Enterprise レベルで既存の外部 ID を照会し、このエラーが発生したときにユーザーが認証に使っていた IdP アカウントの SAML
NameID
でフィルター処理する必要があります。platform-samples
リポジトリの enterprise-saml-identities-filtered-by-nameid.graphql サンプルを参照してください。
- SAML が GitHub organization レベルで構成されている場合: organization 所有者は、organization レベルで既存の外部 ID を照会し、このエラーが発生したときにユーザーが認証に使っていた IdP アカウントの SAML
- 競合する外部 ID に関連付けられた GitHub ユーザーを特定した場合、Enterprise 所有者は、「Enterprise の人を表示する」の手順に従って、そのユーザーが Enterprise とその organization でまだアクティブかどうかを確認できます。
競合を解決する
手順に従って競合するアカウントを特定したら、結果に応じてさまざまな解決オプションがあります。 これらの手順を実行する際に issue が発生した場合、または不明な点がある場合は、GitHub Support ポータル を使って GitHub サポート チケットを開くことができます。
競合する GitHub ユーザーはアクセスする必要がなくなりました
競合する外部 ID に関連付けられた GitHub ユーザー アカウントがあり、GitHub organization または Enterprise にアクセスする必要がなくなった場合は、そのアカウントをメンバーから削除します。 ユーザーが適切に削除されると、リンクされた SAML ID と、リンクされた SCIM ID (organization レベルに存在する場合) も削除されます。
- SCIM プロビジョニングを使って organization のメンバーシップを管理している場合は、GitHub の手順に従うのではなく、SCIM を使って IdP からユーザーのプロビジョニングを解除する必要があります。 そうしないと、ユーザーのリンクされた SAML および SCIM ID が organization 内に残り、引き続きエラーが発生する可能性があります。
- Organization メンバーシップの管理に SCIM プロビジョニングを使っていない場合は、「Organization からメンバーを削除する」または「Enterprise からのメンバーの削除」を参照してください。 また、IdP 内の organization または Enterprise 用 GitHub アプリからユーザーのアクセスを必ず削除してください。
ユーザーの SAML または SCIM ID が GitHub organization から正常に削除されたことを確認する方法については、「組織の ID とアクセス管理のトラブルシューティング」を参照してください。
競合する GitHub ユーザーには引き続きアクセス権が必要です
競合する外部 ID に関連付けられた GitHub ユーザー アカウントがあり、このユーザーが引き続き organization または Enterprise にアクセスする必要がある場合は、ユーザー アカウントにリンクされた ID を変更するか、エラーを受け取っているユーザーに別の IdP ID の認証を受けてもらう必要があります。
- SCIM プロビジョニングを使って organization のメンバーシップを管理しており、メンバーの GitHub アカウントにリンクされている外部 ID を変更する必要がある場合は、IdP からユーザーのプロビジョニングを解除してから再プロビジョニングします (たとえば、アプリへのユーザーの割り当てを解除し、再割り当てします)。
- IdP ユーザーのプロビジョニングが解除されると、その GitHub アカウントとリンクされた SAML/SCIM ID は GitHub organization から削除されます。
- IdP ユーザーが GitHub organization に再プロビジョニングされると、新しい保留中の organization の招待と新しいリンクされていない SCIM ID が作成されます。 これにより、ユーザーはこの GitHub ユーザー アカウントを使ってサインインし、SAML 経由で認証を受け、新しい IdP ID を自分のアカウントにリンクできるようになります。 これらの手順を実行することで、新しい SAML ID と SCIM ID の両方を organization 内の GitHub ユーザー アカウントに適切にリンクすることができます。
- Organization のメンバーシップの管理に SCIM プロビジョニングを使っていない場合、または SAML が Enterprise レベルで構成されている場合は、次のいずれかの記事の手順に従って、ユーザーにリンクされた外部 ID を取り消すことができます。
競合する GitHub ユーザーが見つかりません
競合する外部 ID に関連付けられた GitHub ユーザー アカウントがない場合は、外部 ID を取り消すことができます。
- SCIM プロビジョニングを使って organization のメンバーシップを管理している場合は、リンクされていない古い ID を IdP から削除します (たとえば、IdP アプリからユーザーの割り当てを解除します)。
- IdP から GitHub に適切な SCIM API 呼び出しが送信されないと、ID が organization 内に残るため、引き続きエラーが発生する可能性があります。
- ユーザーの SAML または SCIM ID が GitHub organization から正常に削除されたことを確認する方法については、「組織の ID とアクセス管理のトラブルシューティング」を参照してください。
- Organization のメンバーシップの管理に SCIM プロビジョニングを使っていない場合、リンクされた外部 ID を取り消すには、以下の URL のいずれかに移動して外部 ID を取り消します。
USERNAME
を、サインインできないユーザーの GitHub ユーザー名に置き換え、ORGANIZATION
またはENTERPRISE
を、適切な値に置き換えます。https://github.com/orgs/ORGANIZATION/people/USERNAME/sso
https://github.com/enterprises/ENTERPRISE/people/USERNAME/sso