[GitLab]Google OAuth2認証

GitLab

いろいろなシステムでいろいろなパスワードが段々と面倒になってきた…
ブラウザに記憶しているので普段は良いけど、突発的なときがパスワードを探し出すのが少し面倒…
ってことで、GitLabでもGoogle OAuth2認証でログインできるようにすれば少し楽になるなと。

サーバ環境

GitLab 12.10.5-ee Omnibusインストール

参考

公式

まずは、Google APIsを設定

Google Cloud Platform
Google Cloud Platform lets you build, deploy, and scale applications, websites, and services on the same infrastructure ...
にアクセス

画面上のプロジェクトの選択をクリック

新しいプロジェクトをクリック

プロジェクト名など入力して作成ボタンクリック

さっき作成したプロジェクトに変更して、
OAuth同意画面(画面に画面ってGoogleらしくないな)をクリック。

User Type は 外部のGoogleアカウントは使う必要がないので、「内部」を選択して作成ボタンをクリック

アプリケーション名やら承認済みドメインやらを入力して作成する。

出来上がり!

認証情報→認証情報を作成→OAuthクライアントID をクリック

  • アプリケーションの種類:ウェブアプリケーション
  • 名前:GitLab(識別できればなんでもよい)
  • 承認済みのリダイレクトURI:https://<your domain>/users/auth/google_oauth2/callback

これで、完成!
GitLab側でクライアントIDとクライアントシークレットを使う。

GitLabを設定

SSHでGitLabサーバに接続

設定ファイルを編集

$ sudo vim /etc/gitlab/gitlab.rb
---
< 省略 >
### OmniAuth Settings
###! Docs: https://docs.gitlab.com/ce/integration/omniauth.html
# gitlab_rails['omniauth_enabled'] = false
gitlab_rails['omniauth_enabled'] = true
# gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
gitlab_rails['omniauth_allow_single_sign_on'] = ['google_oauth2']
# 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'
# gitlab_rails['omniauth_block_auto_created_users'] = true
# gitlab_rails['omniauth_auto_link_ldap_user'] = false
# gitlab_rails['omniauth_auto_link_saml_user'] = false
# gitlab_rails['omniauth_external_providers'] = ['twitter', 'google_oauth2']
gitlab_rails['omniauth_external_providers'] = ['google_oauth2']
# gitlab_rails['omniauth_providers'] = [
#   {
#     "name" => "google_oauth2",
#     "app_id" => "YOUR APP ID",
#     "app_secret" => "YOUR APP SECRET",
#     "args" => { "access_type" => "offline", "approval_prompt" => "" }
#   }
# ]
gitlab_rails['omniauth_providers'] = [
  {
    "name" => "google_oauth2",
    "app_id" => "xxxxxxx8u.apps.googleusercontent.com",
    "app_secret" => "xxxxxxxx",
    "args" => { "access_type" => "offline", "approval_prompt" => "" }
  }
]
< 省略 >
---
$ sudo gitlab-ctl reconfigure

app_id と app_secret は、Googleから払い出されたものを使用する。
reconfigureは少し時間がかかる…
GitLab側はこれで終了!

動作確認

ログイン画面

Googleのボタンが表示されているからOK!

ブラウザ上ではGoogleアカウントでログインしている状態で、クリックするとエラー…
既存ユーザーはGoogleアカウントと紐付けしないといけないか…

普通にメールアドレスをパスワードでログインして、探してみるとあった!
右上のアカウントをクリックして、設定をクリック!

左側で「アカウント」を選択して、ソーシャルサインインの「Connect」ボタンクリック。

Googleの認証画面を経て、紐付けされるとこんな感じになる。

紐付け先のアカウトが組織外(ドメインが違う)ならどうなるの?
→承認エラーになる。OKです。

GitLabに登録されていないメールアドレスだとどうなるの?
→GitLabにユーザー登録されているが、ブロック状態で登録されている。正しいユーザーなら管理者でログインして、ブロックを解除してあげる。

まとめ

意外と簡単にGoogle OAuth2認証できたなと思う。
これで少しは楽になるなぁ。
あとは、Wordpressと社内システムに導入すれば結構いい感じで楽になりそうな予感。

コメント

タイトルとURLをコピーしました