注: この記事は、Enterprise Managed Users にのみ適用されます。 Enterprise Managed Users を使用せずに GitHub Enterprise Cloud を使用する場合、ユーザー名は GitHub ではなく、ユーザーによって作成されます。
外部認証を使用するユーザー名について
Enterprise Managed Users のエンタープライズを使用する場合、エンタープライズのメンバーは、SAML ID プロバイダー (IdP) を介して GitHub にアクセスするように認証します。 詳細については、「Enterprise Managed Users について」および「ID とアクセス管理について」を参照してください。
GitHub は、ユーザー アカウントが SCIM を介してプロビジョニングされるときに、IdP によって提供される識別子を正規化し、アンダースコアとショート コードを追加することで、各ユーザーのユーザー名を自動的に作成します。 複数の識別子が同じユーザー名に正規化されると、ユーザー名の競合が発生し、最初のユーザー アカウントのみが作成されます。 ユーザー名の問題を解決するには、正規化されたユーザー名が一意であり、39 文字の上限に収まるように IdP で変更を加えます。
Note
競合は、同じ Enterprise 内のユーザー間でのみ発生します。 マネージド ユーザー アカウント では、IdP の識別子とメール アドレスを、そのエンタープライズ外の GitHub.com 上の他のユーザー アカウントと共有することができます。
マネージド ユーザー アカウント のユーザー名について
マネージド ユーザーを含む Enterprise を作成する際、エンタープライズのメンバーのユーザー名のサフィックスとして使用されるショート コードを選択します。 短いコードは、エンタープライズに固有の 3 から 8 文字の英数字文字列にする必要があります。特殊文字を含めることはできません。 SAML SSO を構成するセットアップ ユーザーのユーザー名は、SHORT-CODE_admin の形式になります。
ID プロバイダーから新しいユーザーをプロビジョニングする場合、新しい マネージド ユーザー アカウント には、 @IDP-USERNAME_SHORT-CODE の形式の GitHub ユーザー名が付きます。 IDP-USERNAME コンポーネントは、IdP から送信された SCIM userName
属性値を正規化することによって形成されます。
ID プロバイダー | GitHub のユーザー名 |
---|---|
Microsoft Entra ID (旧称 Azure AD) | IDP-USERNAME は、ゲスト アカウントの #EXT# を含まない UPN (ユーザー プリンシパル名) の @ 文字の前の文字を正規化することによって形成されます。 |
Okta | IDP-USERNAME は、IdP によって提供される、正規化されたユーザー名属性です。 |
これらの規則により、IdP が複数のユーザーに同じ IDP-USERNAME を提供する可能性があります。 たとえば、Entra ID の場合、次の UPN は同じユーザー名になります。
bob@contoso.com
bob@fabrikam.com
bob#EXT#fabrikamcom@contoso.com
bob_example#EXT#fabrikamcom@contoso.com
bob_example.com#EXT#fabrikamcom@contoso.com
これによりユーザー名が競合し、最初のユーザーのみがプロビジョニングされます。 詳細については、「ユーザー名の問題の解決」を参照してください。
ユーザー名 (アンダースコアと短いコードを含む) は 39 文字を超えてはなりません。
ユーザー名の正規化について
GitHub のユーザー アカウントのユーザー名には、英数字とダッシュ (-
) のみを含めることができます。
SAML 認証を構成すると、GitHub Enterprise Cloud は IdP から送信された SCIM userName
属性値を使用して、GitHub 上の対応するユーザー アカウントのユーザー名を決定します。 この値にサポートされていない文字が含まれている場合、GitHub Enterprise Cloud は、次の規則に従ってユーザー名を正規化します。
-
GitHub Enterprise Cloud は、アカウントのユーザー名に含まれている非英数字をダッシュに変換します。 たとえば、
mona.the.octocat
というユーザー名はmona-the-octocat
に正規化されます。 変換されたユーザ名の先頭及び末尾はダッシュであってはならないことに注意してください。 2つの連続するダッシュを含めることもできません。 -
メール アドレスから作成されたユーザー名は、
@
文字の前の正規化された文字から作成されます。 -
ドメイン アカウントから作成されるユーザー名は、
\\
区切りの後の正規化された文字から作成されます。 -
複数のアカウントが変換後に同じ GitHub Enterprise Cloud のユーザー名になる場合、最初のユーザー アカウントだけが作成されます。 同じユーザ名のそれ以降のユーザは、サインインできません。 詳細については、「ユーザー名の問題の解決」を参照してください。
ユーザー名の正規化の例
プロバイダーの識別子 | GitHub で正規化されたユーザー名 | 結果 |
---|---|---|
The.Octocat | the-octocat_SHORT-CODE | このユーザ名の作成は成功します。 |
!The.Octocat | -the-octocat_SHORT-CODE | このユーザ名はダッシュで始まるので作成されません。 |
The.Octocat! | the-octocat-_SHORT-CODE | このユーザ名はダッシュで終わるので作成されません。 |
The!!Octocat | the--octocat_SHORT-CODE | このユーザ名には連続する2つのダッシュが含まれるので作成されません。 |
The!Octocat | the-octocat_SHORT-CODE | このユーザ名は作成されません。 変換されたユーザ名は正当ですが、すでに存在しています。 |
The.Octocat@example.com | the-octocat_SHORT-CODE | このユーザ名は作成されません。 変換されたユーザ名は正当ですが、すでに存在しています。 |
internal\\The.Octocat | the-octocat_SHORT-CODE | このユーザ名は作成されません。 変換されたユーザ名は正当ですが、すでに存在しています。 |
mona.lisa.the.octocat.from.github.united.states@example.com | mona-lisa-the-octocat-from-github-united-states_SHORT-CODE | このユーザー名は、39 文字の制限を超えているため、作成されません。 |
ユーザー名の問題の解決
新しいユーザーをプロビジョニングするとき、ユーザー名 (アンダースコアとショート コードを含む) が 39 文字より長い場合、またはエンタープライズ内の既存のユーザーと競合する場合、プロビジョニングの試行は 409
エラーで失敗します。
この問題を解決するには、正規化されたすべてのユーザー名が文字数制限内に収まり、一意になるように、IdP で次のいずれかの変更を加える必要があります。
- 問題を引き起こしている個々のユーザーの
userName
属性値を変更します - 全ユーザーの
userName
属性のマッピングを変更します - 全ユーザーのカスタムの
userName
属性を構成します
属性のマッピングを変更すると、既存の マネージド ユーザー アカウント のユーザー名が更新されますが、アクティビティ履歴を含め、アカウントに関して他は何も変更されません。
注: GitHub Support は、属性マッピングのカスタマイズやカスタム式の構成に関するサポートを提供できません。 ご質問がある場合は、IdP にお問い合わせください。
Entra ID に関するユーザー名の問題の解決
Entra ID でユーザー名の問題を解決するには、競合しているユーザーのユーザー プリンシパル名の値を変更するか、userName
属性の属性マッピングを変更します。 属性マッピングを変更する場合は、既存の属性を選択するか、式を使用して、プロビジョニングされたすべてのユーザーが一意の正規化されたエイリアスを持っていることを確認できます。
- Entra ID で GitHub Enterprise Managed User アプリケーションを開きます。
- 左側のサイドバーで、 [プロビジョニング] をクリックします。
- [プロビジョニングの編集] をクリックします。
- [マッピング] を展開し、[Entra ID ユーザーのプロビジョニング] をクリックします。
- GitHub
userName
属性マッピングをクリックします。 - 属性マッピングを変更します。
- Entra ID の既存の属性を GitHub の
userName
属性にマッピングするには、目的の属性フィールドをクリックします。 次に、プロビジョニング サイクルが約 40 分以内に発生するまで保存して待機します。 - 既存の属性の代わりに式を使用するには、Mapping 型を「式」に変更し、この値をすべてのユーザーに対して一意にするカスタム式を追加します。 たとえば、
[FIRST NAME]-[LAST NAME]-[EMPLOYEE ID]
を使用できます。 詳細については、Microsoft Learn の「Microsoft Entra ID で属性マッピングの式を記述するためのリファレンス」を参照してください
- Entra ID の既存の属性を GitHub の
Okta に関するユーザー名の問題の解決
Okta でユーザー名の問題を解決するには、GitHub Enterprise Managed User アプリケーションの属性マッピング設定を更新します。
- Okta で GitHub Enterprise Managed User アプリケーションを開きます。
- [サインオン] をクリックします。
- [設定] セクションで [編集] をクリックします。
- "アプリケーション ユーザー名の形式" を更新します。