Skip to main content

SAML 構成リファレンス

組織または Enterprise ののSAML メタデータをGitHub Enterprise Cloudで確認でき、利用可能な SAML 属性属性と応答要件について詳細を参照できます。

SAML 構成について

GitHub Enterprise Cloudに認証用 SAML シングル サインオン(SSO)を使用するには、外部 SAML ID プロバイダー(IdP)とGitHub.comの Enterprise または組織の両方を構成する必要があります。 SAML 構成では、GitHub Enterprise Cloud は SAML サービス プロバイダーとして機能します。 Enterprise の認証の詳細については、「ID とアクセス管理について」を参照してください。

GitHub Enterprise Cloud は、SAML 2.0 仕様に従って統合を提供します。 詳細については、OASIS の Web サイトの SAML Wiki を参照してください。

GitHub Enterprise Cloud 向けの SAML SSO を構成する場合は、SAML IdP から一意の値を入力する必要があります。また、IdP では GitHub Enterprise Cloud から一意の値を入力する必要もあります。 認証の詳細について

SAMLのメタデータ

GitHub Enterprise Cloud の SP メタデータは、SAML SSO を使用する組織または エンタープライズのいずれかに使用できます。 GitHub Enterprise Cloud では、urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST バインディングを使用します。

組織

エンタープライズ内の個々の組織向けの SAML SSO を構成できます。 また、GitHub Enterprise Cloud で個々の組織を使用し、エンタープライズアカウントを使用しない場合は、組織向けの SAML SSO を構成できます。 詳しくは、「Organization で SAML シングルサインオンを管理する」を参照してください。

GitHub.com上の組織の SP メタデータは、https://github.com/orgs/ORGANIZATION/saml/metadata で入手できます。ORGANIZATION は、GitHub.com上の組織の名前です。

その他の名前説明
SP エンティティ IDSP URL、対象ユーザー制限GitHub.com上の組織の最上位の URLhttps://github.com/orgs/ORGANIZATION
SP アサーションコンシューマーサービス (ACS) URL応答、受信者、または宛先 URLIdP が SAML レスポンスを送信する URLhttps://github.com/orgs/ORGANIZATION/saml/consume
SP シングルサインオン (SSO) URL
IdP が SSO を開始する URLhttps://github.com/orgs/ORGANIZATION/sso

Enterprise

GitHub.com上の エンタープライズの SP メタデータは、https://github.com/enterprises/ENTERPRISE/saml/metadata で入手できます。エンタープライズは、GitHub.com上の エンタープライズの名前です。

その他の名前説明
SP エンティティ IDSP URL、対象ユーザー制限GitHub.com上の エンタープライズの最上位の URLhttps://github.com/enterprises/ENTERPRISE
SP アサーションコンシューマーサービス (ACS) URL応答、受信者、または宛先 URLIdP が SAML レスポンスを送信する URLhttps://github.com/enterprises/ENTERPRISE/saml/consume
SP シングルサインオン (SSO) URL
IdP が SSO を開始する URLhttps://github.com/enterprises/ENTERPRISE/saml/sso

SAMLの属性

GitHub Enterprise Cloud では、次の SAML の属性を使用できます。

名前必須説明
NameID永続ユーザ識別子。 任意の名前識別子の形式を使用できます。 Enterprise Managed Users で エンタープライズを使用する場合、代替アサーションのいずれかが指定されていない限り、GitHub Enterprise Cloud は、NameID 要素を正規化し、ユーザー名として使用します。 詳しくは、「外部認証のユーザー名に関する考慮事項」を参照してください。

メモ: 人間が判別できる、永続的識別子を使うことが重要です。 urn:oasis:names:tc:SAML:2.0:nameid-format:transient のような一時的な識別子の形式を使うと、サインインのたびにアカウントが再リンクされます。このことは、承認管理に悪影響を及ぼします。
SessionNotOnOrAfter関連付けられたセッションが GitHub Enterprise Cloud によって無効化される日付。 無効になった後、企業のリソースにアクセスするには、ユーザーはもう一度認証を行う必要があります。 詳しい情報については、「セッションの継続時間とタイムアウト」を参照してください。
full_nameエンタープライズ向けの SAML SSO を構成し、Enterprise Managed Users を使用する場合、ユーザーのプロファイル ページに表示するユーザーのフル ネーム。
emailsユーザーのメール アドレス。 GitHub Enterprise ServerとGitHub Enterprise Cloud間でライセンス使用を同期する場合、GitHub Connectは emails を使用して製品間で一意のユーザーを識別します。 詳しくは、「GitHub Enterprise ServerとGitHub Enterprise Cloudとのライセンス利用状況の同期」を参照してください。
public_keysエンタープライズ向けの SAML SSO を構成し、Enterprise Managed Users を使用する場合、ユーザーのパブリック SSH キー。 複数のキーを指定できます。
gpg_keysエンタープライズ向けの SAML SSO を構成し、Enterprise Managed Users を使用する場合、ユーザーの GPG キー。 複数のキーを指定できます。

属性に複数の値を指定するには、複数の <saml2:AttributeValue> 要素を使用します。

<saml2:Attribute FriendlyName="public_keys" Name="urn:oid:1.2.840.113549.1.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
    <saml2:AttributeValue>ssh-rsa LONG KEY</saml2:AttributeValue>
    <saml2:AttributeValue>ssh-rsa LONG KEY 2</saml2:AttributeValue>
</saml2:Attribute>

SAML 応答の要件

GitHub Enterprise Cloud では、IdP からの応答メッセージが次の要件を満たしている必要があります。

  • IdP では、ルート応答ドキュメントで <Destination> 要素を指定し、ルート応答ドキュメントが署名されている場合にのみ ACS URL と一致する必要があります。 IdP によってアサーションに署名されている場合、GitHub Enterprise Cloud ではアサーションが無視されます。

  • IdP では常に、<AudienceRestriction> 要素の一部として <Audience> 要素を指定する必要があります。 値は GitHub Enterprise Cloud の EntityId と一致している必要があります。

    • 組織の SAML を構成する場合、この値は https://github.com/orgs/ORGANIZATIONです。
    • エンタープライズの SAML を構成する場合、この値は https://github.com/enterprises/ENTERPRISEです。
  • IdP では、応答内の各アサーションをデジタル署名で保護する必要があります。 これは、個々の <Assertion> 要素に署名するか、<Response> 要素に署名することで実現できます。

  • IdP では、<Subject> 要素の一部として <NameID> 要素を指定する必要があります。 任意の永続的な名前識別子の形式を使用できます。

  • IdP には Recipient 属性を含める必要があり、これは ACS URL に設定される必要があります。 次の例は、属性を示しています。

    <samlp:Response ...>
      <saml:Assertion ...>
        <saml:Subject>
          <saml:NameID ...>...</saml:NameID>
          <saml:SubjectConfirmation ...>
            <saml:SubjectConfirmationData Recipient="https://github.com/enterprises/ENTERPRISE/saml/consume" .../>
          </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:AttributeStatement>
          <saml:Attribute FriendlyName="USERNAME-ATTRIBUTE" ...>
            <saml:AttributeValue>monalisa</saml:AttributeValue>
          </saml:Attribute>
        </saml:AttributeStatement>
      </saml:Assertion>
    </samlp:Response>
    

セッションの継続期間とタイムアウト

ユーザーの IdP で他のユーザーが認証を行い、無期限に承認される状態を防ぐため、GitHub Enterprise Cloudは企業のリソースへのアクセス権を持つ各ユーザー アカウントのセッションが定期的に無効にします。 無効になると、ユーザーは IdP でもう一度認証を行う必要があります。

既定では、IdP が SessionNotOnOrAfter 属性の値をアサートしない場合、GitHub Enterprise Cloudは IdP による認証に成功してから24 時間後にセッションを無効にします。

IdP が SessionNotOnOrAfter 属性と値。

カスタマイズされたセッション継続時間の値を 24 時間未満の値に定義すると、GitHub Enterprise Cloud がリダイレクトを開始するたびに、ユーザーに認証を求めるメッセージが表示される場合があります。

認証エラーを防ぐため、最短セッション期間を 4 時間にすることをお勧めします。 詳しくは、「SAML認証」を参照してください。

注:

  • Microsoft Entra ID (旧称 Azure AD) の場合、SAML トークンの構成可能な有効期間ポリシーでは、GitHub Enterprise Cloud のセッション タイムアウトは制御されません。
  • Okta は現在、GitHub Enterprise Cloud での SAML 認証中に SessionNotOnOrAfter 属性を送信しません。 詳しい情報については、Okta にお問い合わせください。