Skip to main content

SAML 構成リファレンス

GitHub Enterprise Cloud 上の Organization または Enterprise の SAML メタデータを確認でき、SAML の使用できる属性と応答の要件の詳細を理解できます。

SAML 構成について

GitHub Enterprise Cloud への認証に SAML シングル サインオン (SSO) を使うには、外部 SAML ID プロバイダー (IdP) と、GitHub.com上の Enterprise または Organization の両方を構成する必要があります。 SAML 構成では、GitHub Enterprise Cloud は SAML サービス プロバイダーとして機能します。

GitHub Enterprise Cloud 向けの SAML SSO を構成する場合は、SAML IdP から一意の値を入力する必要があります。また、IdP では GitHub Enterprise Cloud から一意の値を入力する必要もあります。 GitHub Enterprise Cloud の SAML SSO の構成に関する詳しい情報については、「Enterprise 向けの SAML シングルサインオンを設定する」または「Organization 向けの SAML シングルサインオンを有効化してテストする」を参照してください。

SAMLのメタデータ

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

組織

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

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

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

Enterprise

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

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

SAMLの属性

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

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

メモ: 人間が判別できる、永続的識別子を使うことが重要です。 urn:oasis:names:tc:SAML:2.0:nameid-format:transient のような一時的な識別子の形式を使うと、サインインのたびにアカウントが再リンクされます。このことは、承認管理に悪影響を及ぼします。
SessionNotOnOrAfterNo関連付けられたセッションが GitHub Enterprise Cloud によって無効化される日付。 無効になった後、Enterprise のリソースにアクセスするには、ユーザーはもう一度認証を行う必要があります。 詳しい情報については、「セッションの継続時間とタイムアウト」を参照してください。

属性に複数の値を指定するには、複数の <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 と一致する必要があります。

    • Organization の SAML を構成する場合、この値は https://github.com/orgs/ORGANIZATIONです。
    • Enterprise の 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 では、Enterprise のリソースへのアクセス権を持つ各ユーザー アカウントのセッションが定期的に無効にされます。 無効になると、ユーザーは IdP でもう一度認証を行う必要があります。 既定では、IdP で SessionNotOnOrAfter 属性の値がアサートされない場合、GitHub Enterprise Cloud では、IdP による認証に成功してから 24 時間後にセッションを無効にします。

セッションの持続期間をカスタマイズするために、IdP で SessionNotOnOrAfter 属性の値を定義できる場合があります。 24 時間未満の値を定義すると、GitHub Enterprise Cloud は、GitHub Enterprise Cloud がリダイレクトを開始するたびに、ユーザーに認証を求める場合があります。

認証エラーを防ぐため、最短セッション期間を 4 時間にすることをお勧めします。 詳しくは、SAML 認証のトラブルシューティングに関する記事をご覧ください。

:

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