Skip to main content

SAML 構成リファレンス

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

SAML 構成について

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

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

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

SAMLのメタデータ

お使いの GitHub Enterprise Server インスタンスの 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) URL
IdP が SSO を開始する URLhttp(s)://HOSTNAME/sso

SAMLの属性

GitHub Enterprise Server では、次の SAML の属性を使用できます。属性名は、administrator 属性を除いて、[Management Console]で変更できます。 詳細については、「Web UI からインスタンスを管理する」を参照してください。

名前必須説明
NameID永続ユーザ識別子。 任意の名前識別子の形式を使用できます。 代替アサーションのいずれかが指定されていない限り、GitHub Enterprise Server は、NameID 要素を正規化し、ユーザー名として使用します。 詳しくは、「Username considerations for external authentication」を参照してください。

メモ: 人間が判別できる、永続的識別子を使うことが重要です。 urn:oasis:names:tc:SAML:2.0:nameid-format:transient のような一時的な識別子の形式を使うと、サインインのたびにアカウントが再リンクされます。このことは、承認管理に悪影響を及ぼします。
SessionNotOnOrAfter関連付けられたセッションが GitHub Enterprise Server によって無効化される日付。 無効になった後、お使いの GitHub Enterprise Server インスタンスにアクセスするには、ユーザーはもう一度認証を行う必要があります。 詳しい情報については、「セッションの継続時間とタイムアウト」を参照してください。
administrator値が true の場合、GitHub Enterprise Server によって、ユーザーは自動的にサイト管理者に昇格されます。 この属性を true 以外に設定すると、値が空白でない限り、降格になります。 この属性を省略するか、値を空白にすると、ユーザーのロールは変更されません。
usernameお使いの GitHub Enterprise Server インスタンス のユーザー名。
full_nameユーザーのプロファイル ページに表示するユーザーのフル ネーム。
emailsユーザーのメール アドレス。 複数のアドレスを指定できます。 GitHub Enterprise Server と GitHub Enterprise Cloud 間でライセンス使用状況を同期する場合、GitHub Connect では、emails を使用して、製品間で一意のユーザーを特定します。 詳しくは、「GitHub Enterprise ServerとGitHub Enterprise Cloudとのライセンス利用状況の同期」を参照してください。
public_keysユーザーのパブリック SSH キー。 複数のキーを指定できます。
gpg_keysユーザーの 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 Server では、IdP からの応答メッセージが次の要件を満たしている必要があります。

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

  • IdP では常に、<AudienceRestriction> 要素の一部として <Audience> 要素を指定する必要があります。 値は、GitHub Enterprise Server の EntityId と一致する必要があります。この値は、お使いの GitHub Enterprise Server インスタンスにアクセスする 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 では、お使いの GitHub Enterprise Server インスタンスへのアクセス権を持つ各ユーザー アカウントのセッションが定期的に無効にされます。 無効になると、ユーザーは IdP でもう一度認証を行う必要があります。

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

IdP が SessionNotOnOrAfter 属性と値 を構成するオプションを提供し、且つこの属性が SAML 応答に含まれている場合、GitHub Enterprise Server はカスタマイズされたセッション期間をサポートします。 IdP で SessionNotOnOrAfter 属性が許可されていない場合、サイト管理者は管理シェルで ghe-config saml.default-session-expiration [seconds] コマンドを使い、インスタンス上のすべてのユーザーに対してカスタム SAML セッション タイムアウトを構成できます。

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

インスタンスで使用されている認証方法に関係なく、GitHub Enterprise Server は非アクティブ状態が 2 週間続くとユーザー セッションを終了します。

:

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