オンプレGitLabにGoogleアカウントでログイン

AzureADアカウントでのログインは 以前 投稿しましたが、
Googleアカウントでのログインは書いてなかったなと思いましたので書きました。
社内での利用ならG Suiteアカウントを使うのが一般的かと思いますが、Googleアカウントでもできました。

GitLabは sameersbn/gitlab のコンテナを利用させてもらってdocker-composeで構築します。
以下の手順は こちらの投稿 で構築したGitLabに機能追加しました。
ちなみにバージョンは12.9.5で確認しています。

GCP側の準備

Google OAuth2の公式の手順は こちらにあります。
手順に従って、プロジェクトを作成しましたら、
Google API Consoleにアクセスして、OAuth同意画面に進みます。

gitlab_google_oauth2_00001.png

ユーザーの種類は、今回はテストなので外部としています。
G Suiteの場合は内部とするのがいいと思います。

gitlab_google_oauth2_00002.png

次に、認証情報にて「認証情報を作成」⇒「OAuth クライアント ID」に進みます。

gitlab_google_oauth2_00003.png

こちらで入力する内容はドキュメントを参照してください。
僕の環境では以下のようになりますが、ドメインなど各自の環境に合わせて変更してください。

承認済みのJavaScript生成元 : https://example.tsuchinokometal.com
承認済みのリダイレクトURI : https://example.tsuchinokometal.com/gitlab/users/auth/google_oauth2/callback
gitlab_google_oauth2_00004.png

作成すると、以下の画面が表示されるので、クライアントIDとシークレットをメモっておいてください。

gitlab_google_oauth2_00005.png

docker-composeの設定

GitLabコンテナのenvironmentで以下の設定とします。
G Suiteで独自ドメインを利用している場合は、
OAUTH_GOOGLE_RESTRICT_DOMAINを設定した方がいいと思います。

    - OAUTH_ENABLED=true
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=google_oauth2
    - OAUTH_BLOCK_AUTO_CREATED_USERS=false
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_GOOGLE_API_KEY=<クライアントID>
    - OAUTH_GOOGLE_APP_SECRET=<シークレット>
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

GitLabコンテナを再起動すると以下のようにGoogleボタンが表示されますので、
そこをクリックするとシングルサインオンすることができます。

gitlab_google_oauth2_00006.png

認証画面が出ますので、自分のGoogleアカウントで認証してみてください。

gitlab_google_oauth2_00007.png

うまくいけばログインできると思います。

gitlab_google_oauth2_00008.png

ログインできたアカウントを確認すると、
以下のようにGoogle OAuth2の認証情報を持っていることを確認できます。

gitlab_google_oauth2_00009.png