Gitlab を G Suite(SAML アプリ)でログイン可能にする

参考 https://medium.com/mop-developers/how-to-set-up-gitlab-single-sign-on-with-google-g-suite-f5e88ae8ba7

# オプション の変更
$ sudoedit /etc/gitlab/gitlab.rb

gitlab_rails['omniauth_enabled'] = true

// この Gitlab にアカウントがなかった場合、アカウントの自動生成を許可するプロバイダを指定
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']

// 調べたけれどドキュメントが見つからず詳細不明
gitlab_rails['omniauth_sync_email_from_provider'] = 'saml'

// プロフィールを同期するプロバイダを指定
gitlab_rails['omniauth_sync_profile_from_provider'] = ['saml']

// 同期するプロフィールの情報
gitlab_rails['omniauth_sync_profile_attributes'] = ['email']

// 自動サインインを許可するプロバイダ
gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'saml'

// true にすると自動生成されたアカウントのログインをブロックする(管理者によるブロック解除が必要)
gitlab_rails['omniauth_block_auto_created_users'] = false

// LDAP / ActiveDirectory 統合を無効
gitlab_rails['omniauth_auto_link_ldap_user'] = false

// プロバイダのアカウントのメールアドレスが、Gitlab の既存アカウントと一致した場合、自動的にリンクさせる
gitlab_rails['omniauth_auto_link_saml_user'] = true

// 指定プロバイダーを外部アカウントとして扱い、内部プロジェクトにアクセスできなくする
# gitlab_rails['omniauth_external_providers'] = ['saml']

// 2要素認証をパスするプロバイダを指定、saml には適用されない
# gitlab_rails['omniauth_allow_bypass_two_factor'] = ['google_oauth2']

gitlab_rails['omniauth_providers'] = [
  {
    'label' => 'G Suite',
    'name' => 'saml',
    'args' => {
      'assertion_consumer_service_url': 'https://gitlab.example.com/users/auth/saml/callback',
      'idp_cert_fingerprint': 'XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX',
      'idp_sso_target_url': 'https://accounts.google.com/o/saml2/idp?idpid=XXXXXXXX',
      'issuer': 'https://gitlab.example.com',
      'name_identifier_format': 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress',
      'attribute_statements': { 'email': ['emailAddress'] }
    },
  }
]

# 反映
$ sudo gitlab-ctl reconfigure

サイトにアクセスして【G Suite】ボタンから Google アカウントでログインできることを確認する。

上記が確認できたあとで、以下を設定することで、指定プロバイダにログイン中ならば、自動的に Gitlab にログインできるようになる。

# オプション の変更
$ sudoedit /etc/gitlab/gitlab.rb

gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'saml'

# 反映
$ sudo gitlab-ctl reconfigure