Skip to main content

SAML 構成リファレンス

your GitHub Enterprise Server instanceの SAML メタデータを確認でき、SAML の使用できる属性と応答の要件の詳細を理解できます。

SAML 構成について

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

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

SAMLのメタデータ

your GitHub Enterprise Server instanceの SP メタデータは、http(s)://HOSTNAME/saml/metadata で入手できます。HOSTNAME は、インスタンスのホスト名です。 GitHub Enterprise Server では、urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST バインディングを使用します。

その他の名前説明
SP エンティティ IDSP URL、対象ユーザー制限GitHub Enterprise Server のトップレベル URLhttp(s)://HOSTNAME
SP アサーションコンシューマーサービス (ACS) URL応答、受信者、または宛先 URLIdP が SAML レスポンスを送信する URLhttp(s)://HOSTNAME/saml/consume
SP シングルサインオン (SSO) URLIdP が SSO を開始する URLhttp(s)://HOSTNAME/sso

SAMLの属性

GitHub Enterprise Server では、次の SAML の属性を使用できます。 属性名は、administrator 属性を除いて、管理コンソールで変更できます。 詳しい情報については、「管理コンソールへのアクセス」を参照してください。

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

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

属性に複数の値を指定するには、複数の <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 Server では、IdP からの応答メッセージが次の要件を満たしている必要があります。

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

  • IdP では常に、<AudienceRestriction> 要素の一部として <Audience> 要素を指定する必要があります。 値は、GitHub Enterprise Server の EntityId と一致する必要があります。この値は、your GitHub Enterprise Server instanceにアクセスする URL です (例: http(s)://HOSTNAME)。

  • 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://HOSTNAME/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 Server では、your GitHub Enterprise Server instanceへのアクセス権を持つ各ユーザー アカウントのセッションが定期的に無効にされます。 無効になると、ユーザーは IdP でもう一度認証を行う必要があります。 既定では、IdP で SessionNotOnOrAfter 属性の値がアサートされない場合、GitHub Enterprise Server では、IdP による認証に成功してから 1 週間後にセッションを無効にします。

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

:

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