====== 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