自分で構築したGitLabにGoogleアカウントでログインできるようにする手順のまとめです。
Gitlabを構築する下記記事の続きになります。
前提(前準備)
GCP(Google Cloud Platform)にGitLab用のプロジェクトが作成済みの前提です。
GCPにOAuth用の設定を追加する
APIとサービス > OAuth同意画面 でGoogleアカウント連携時の設定を行います。
「User Type」には「内部」を選択。
内部を選択した場合には、このGCPに紐づくGoogle Workspaceのユーザーのみが利用できる設定になります。
外部を選択すると全てのGoogleアカウントで利用できるようになりますが、プライバシーポリシーの設定やGoogleの審査などが必要になるようで(組織外のユーザー情報を扱うことになるので)、結構手間がかかります。
今回は組織内のユーザーのみが使えれば良いので、内部を選択しています。
GitLabのロゴ画像などは下記から取得できます。
https://about.gitlab.com/press/press-kit/
内部を選択しているので、プライバシーポリシーや利用規約は不要です。
利用するスコープを追加します。
メールアドレスや一般的なユーザープロファイルが参照できれば良いので、userinfo.email
とuserinfo.profile
を追加しておきます。
次にクライアントID/シークレットを作成します。
APIとサービス > 認証情報 と進み、 認証情報を作成から「OAuthクライアントID」を選択。
「承認済みのJavaScript生成元」として下記を指定
https://gitlab.xxx.com
「認証済みのリダイレクトURI」として下記を指定
https://gitlab.xxx.com/users/auth/google_oauth2/callback
-
https://gitlab.xxx.com/-/google_api/auth/callback
完了すると「クライアントID」と「クライアントシークレット」が作成されますので、大切に保管してください。
GitLabにGoogle OAuthの設定を追加する
/etc/gitlab/gitlab.rb
を編集します。
設定内容としては下記。
- GitLabに登録済みのユーザーのみGooleログインを利用可能
勝手にGitLabのユーザーを登録しない - GitLabに同じメールアドレスのユーザーがいた場合、同一ユーザーとして扱う
omniauth_auto_link_user - Googleログインの場合は2FAは不要
omniauth_allow_bypass_two_factor
Googleログインで2FAを行っているので。
gitlab_rails['omniauth_auto_link_user'] = ['google_oauth2']
gitlab_rails['omniauth_allow_bypass_two_factor'] = ['google_oauth2']
gitlab_rails['omniauth_providers'] = [
{
"name" => "google_oauth2",
"label" => "Google(好きに設定)",
"app_id" => "クライアントID",
"app_secret" => "クライアントシークレット",
"args" => { "access_type" => "offline", "approval_prompt" => "" }
}
]
設定が完了したら、GitLabを再構築します。
$ sudo gitlab-ctl reconfigure