SAML 構成について
GitHub Enterprise Server への認証に SAML シングル サインオン (SSO) を使うには、外部 SAML ID プロバイダー (IdP) と、お使いの GitHub Enterprise Server インスタンスの両方を構成する必要があります。 SAML 構成では、GitHub Enterprise Server は SAML サービス プロバイダーとして機能します。
GitHub Enterprise Server 向けの SAML SSO を構成する場合は、SAML IdP から一意の値を入力する必要があります。また、IdP では GitHub Enterprise Server から一意の値を入力する必要もあります。 GitHub Enterprise Server の SAML SSO の構成に関する詳しい情報については、「Enterprise 向けの SAML シングルサインオンを設定する」を参照してください。
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 エンティティ ID | SP URL、対象ユーザー制限 | GitHub Enterprise Server のトップレベル URL | http(s)://HOSTNAME |
SP アサーションコンシューマーサービス (ACS) URL | 応答、受信者、または宛先 URL | IdP が SAML レスポンスを送信する URL | http(s)://HOSTNAME/saml/consume |
SP シングルサインオン (SSO) URL | IdP が SSO を開始する URL | http(s)://HOSTNAME/sso |
SAMLの属性
GitHub Enterprise Server では、次の SAML の属性を使用できます。属性名は、administrator
属性を除いて、[Management Console]で変更できます。 詳細については、「管理コンソールからのインスタンスの管理」を参照してください。
名前 | 必須 | 説明 |
---|---|---|
NameID | 永続ユーザ識別子。 任意の名前識別子の形式を使用できます。 代替アサーションのいずれかが指定されていない限り、GitHub Enterprise Server は、NameID 要素を正規化し、ユーザー名として使用します。 詳しくは、「外部認証のユーザー名に関する考慮事項」を参照してください。メモ: 人間が判別できる、永続的識別子を使うことが重要です。 urn:oasis:names:tc:SAML:2.0:nameid-format:transient のような一時的な識別子の形式を使うと、サインインのたびにアカウントが再リンクされます。このことは、承認管理に悪影響を及ぼします。 | |
SessionNotOnOrAfter | 関連付けられたセッションが GitHub Enterprise Server によって無効化される日付。 無効になった後、お使いの GitHub Enterprise Server インスタンスにアクセスするには、ユーザーはもう一度認証を行う必要があります。 詳しい情報については、「セッションの継続時間とタイムアウト」を参照してください。 |
属性に複数の値を指定するには、複数の <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 による認証に成功してから 2 週間後にセッションを無効にします。
セッションの持続期間をカスタマイズするために、IdP で SessionNotOnOrAfter
属性の値を定義できる場合があります。 24 時間未満の値を定義すると、GitHub Enterprise Server は、GitHub Enterprise Server がリダイレクトを開始するたびに、ユーザーに認証を求める場合があります。
注:
- Azure AD の場合、SAML トークンの構成可能な有効期間ポリシーでは、GitHub Enterprise Server のセッション タイムアウトは制御されません。
- Okta は現在、GitHub Enterprise Server での SAML 認証中に
SessionNotOnOrAfter
属性を送信しません。 詳しい情報については、Okta にお問い合わせください。