ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。
記事のバージョン: Enterprise Server 2.14

このバージョンの GitHub Enterprise はこの日付をもって終了となります: このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2019-07-12. 重大なセキュリティ上の問題があっても、パッチはリリースされなくなります。優れたパフォーマンス、改善されたセキュリティ、そして新しい機能のために、GitHub Enterprise の最新バージョンにアップグレードしてください。 アップグレードに関するヘルプについては、GitHub Enterprise Support に連絡してください。

SAMLの利用

SAML は認証と認可のための XML ベースの標準です。 GitHub Enterprise Server は、内部的な SAML アイデンティティプロバイダ (IdP) とサービスプロバイダ (SP) として動作できます。

使用しているアイデンティティプロバイダに追加せずにユーザを認証したい場合、ビルトイン認証を設定できます。詳細は「アイデンティティプロバイダ外のユーザに対するビルトイン認証を許可する」を参照してください。

このガイドの内容は以下のとおりです。

サポートされているSAMLサービス

弊社では、SAML 2.0 標準を実装するすべてのアイデンティティプロバイダに対して限定的なサポートを提供します。内部的にテストされた以下のアイデンティティプロバイダを公式にサポートします:

GitHub Enterprise は、SAML シングルログアウトをサポートしません。アクティブな SAML セッションを終了するには、ユーザは SAML サーバーで直接ログアウトしなければなりません。

SAMLでのユーザ名についての考慮

各GitHub Enterprise Serverユーザ名は、SAMLの応答で次のアサーションのいずれかによって決定され、優先順位で並べられます。

NameID要素は、他の属性が存在する場合でも必須です。

NameIDとGitHub Enterprise Serverユーザ名の間にマッピングが作成されるので、NameIDは永続的かつ一意でなければならず、ユーザのライフサイクルを通じて変化しないことが必要です。

GitHub Enterprise Server のユーザ名には、英数字文字とダッシュ (-) のみが利用できます。GitHub Enterprise Server はアカウントのユーザ名内の非英数字文字をダッシュに正規化します。たとえば gregory.st.john のユーザ名は gregory-st-john に正規化されます。正規化されたユーザ名の先頭や末尾はダッシュにする事ができません。また、2 つ連続でダッシュを含むこともできません。

メールアドレスから生成されたユーザ名は、@ 文字の前の正規化された文字から生成されます。

複数のアカウントが正規化されて同一の GitHub Enterprise Server ユーザ名になる場合、1 つめのユーザアカウントだけが作成されます。同じユーザ名のそれ以降のユーザは、サインインできなくなります。

以下の表は、ユーザ名が GitHub Enterprise Server でどのように正規化されるかの例です。

ユーザ名 正規化されたユーザ名 結果
Ms.Bubbles ms-bubbles このユーザ名は問題なく生成されました。
!Ms.Bubbles -ms-bubbles このユーザ名はダッシュから始まるので生成されません。
Ms.Bubbles! ms-bubbles- このユーザ名はダッシュで終わるので生成されません。
Ms!!Bubbles ms--bubbles このユーザ名は2つの連続したダッシュを含むので生成されません。
Ms!Bubbles ms-bubbles このユーザ名は生成されません。正規化されたユーザ名は正当ですが、既存のユーザ名です。
Ms.Bubbles@example.com ms-bubbles このユーザ名は生成されません。正規化されたユーザ名は正当ですが、既存のユーザ名です。

2要素認証

SAML あるいは CAS を利用する場合、2要素認証は GitHub Enterprise Server アプライアンス上ではサポートあるいは管理されませんが、外部の認証プロバイダによってサポートされることはあります。Organization での 2 要素認証の強制はできません。Organization での 2 要素認証の強制に関する詳しい情報については、「Organization で 2 要素認証を要求する」を参照してください。

SAMLのメタデータ

GitHub Enterprise Server インスタンスのサービスプロバイダメタデータは、http(s)://[hostname]/saml/metadata にあります。

アイデンティティプロバイダを手動で設定するなら、Assertion Consumer Service (ACS) URLはhttp(s)://[hostname]/saml/consumeです。 これはurn:oasis:names:tc:SAML:2.0:bindings:HTTP-POSTバインディングを利用します。

SAMLの属性

以下の属性が利用できます。 administrator属性以外の属性の名前はManagement Consoleで変更できます。

デフォルトの属性名 種類 説明
NameID 必須 永続ユーザ識別子。 任意の名前識別子の形式を使用できます。 どの代替アサーションも指定しない場合、GitHub Enterprise Serverユーザ名にはNameID要素が使用されます。
administrator 任意 この値が 'true' であれば、ユーザは自動的に管理者に昇格します。 他の値、あるいは値が存在しない場合は、ユーザは通常のユーザアカウントに降格します。
ユーザ名 任意 GitHub Enterprise Server のユーザ名
full_name 任意 ユーザのプロフィールページに表示されるユーザ名です。 ユーザはプロビジョニング後に名前を変更できます。
emails 任意 ユーザのメールアドレス。 複数指定することができます。
public_keys 任意 ユーザの公開 SSH キー。 複数指定することができます。
gpg_keys 任意 ユーザの GPG キー。 複数指定することができます。

SAMLの設定

  1. 任意のページの右上の隅で をクリックしてください。

    サイト管理設定にアクセスするための Rockership アイコン

  2. 左サイドバーで [Management Console] をクリックします。

    左サイドバーの Management Console タブ

左サイドバーで [Authentication] をクリックします。 設定のサイドバーの認証タブ

  1. SAMLを選択してください。

    SAML認証

  2. あるいは、ユーザがGitHub Enterprise Server インスタンスのアイデンティティプロバイダに属していないなら、Allow built-in authentication(ビルトイン認証の許可)を選択して、ビルトイン認証を使うように招待することもできます。

    SAML ビルトイン認証の選択チェックボックス

  3. オプションで、未承諾応答SSOを有効化する場合は [IdP initiated SSO] を選択します。 デフォルトでは、GitHub Enterprise Serverは未承認アイデンティティプロバイダ (IdP) 起点のリクエストに対して、IdPへのAuthnRequest返信で応答します。

    SAML idP SSO

    ノート:この値は選択しないでおくことをおすすめします。 この機能を有効にするのは、SAMLの実装がサービスプロバイダ起点のSSOをサポートしないまれな場合と、GitHub Enterprise Supportによって推奨された場合だけにすべきです。

  4. GitHub Enterprise Server インスタンス上のユーザの管理者権限をSAMLプロバイダに決めさせたくないなら、Disable administrator demotion/promotion(管理者の降格/昇格の無効化を選択してください。

    SAMLの無効化の管理者設定

  5. Single sign-on URL(シングルサインオンURL)フィールドに、使用するIdpのシングルサインオンのリクエストのためのHTTPあるいはHTTPSエンドポイントを入力してください。 この値はIdpの設定によって決まります。 ホストが内部のネットワークからしか利用できない場合、GitHub Enterprise Server インスタンスを内部ネームサーバーを利用するように設定する必要があるかもしれません。

    SAML認証

  6. または、[Issuer] フィールドに、SAML の発行者の名前を入力します。 これは、GitHub Enterprise Server インスタンス へ送信されるメッセージの真正性を検証します。

    SAML発行者

  7. Signature Method(シグニチャ方式)及びDigest Method(ダイジェスト方式)のドロップダウンメニューでは、SAMLの発行者がGitHub Enterprise Server インスタンスからのリクエストの整合性の検証に使うハッシュアルゴリズムを選択してください。 Name Identifier Format(Name Identifier形式)ドロップダウンメニューから形式を指定してください。

    SAML方式

  8. Verification certificate(検証証明書)の下でChoose File(ファイルの選択)をクリックし、IdPからのSAMLのレスポンスを検証するための証明書を選択してください。

    SAML認証

  9. 必要に応じてSAMLの属性名はIdPに合わせて修正してください。あるいはデフォルト名をそのまま受け付けてください。

    SAMLの属性名

GitHub Enterprise Server インスタンスへのアクセスの削除

アイデンティティプロバイダからユーザを削除したなら、そのユーザを手動でサスペンドもしなければなりません。 そうしなければ、そのユーザはアクセストークンあるいはSSHキーを使って引き続き認証を受けることができてしまいます。 詳しい情報についてはユーザのサスペンドとサスペンドの解除を参照してください。

レスポンスメッセージについての要求

レスポンスメッセージは以下の要求を満たさなければなりません。

<AudienceRestriction>要素の一部として<Audience>要素が指定されている場合は、GitHub Enterprise ServerエンティティIdと比較チェックされます。これはGitHub Enterprise ServerインスタンスのURLで、https://ghe.corp.example.comなどです。

<samlp:Response ...>
  <saml:Assertion ...>
    <saml:Subject>
      <saml:NameID ...>...</saml:NameID>
      <saml:SubjectConfirmation ...>
        <saml:SubjectConfirmationData Recipient="https://ghe.corp.example.com/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>

エラーメッセージ

RecipientがACS URLと一致しなかった場合、authログに以下のエラーメッセージが残されます。

Recipient in the SAML response was not valid.

Recipientがレスポンスメッセージの一部ではなかった場合、authログに以下のエラーメッセージが残されます。

Recipient in the SAML response must not be blank.

SAMLレスポンスが署名されていなかった場合、あるいは署名が内容とマッチしなかった場合、authログに以下のエラーメッセージが残されます。

SAML Response is not signed or has been modified.

担当者にお尋ねください

探しているものが見つからなかったでしょうか?

弊社にお問い合わせください