いろいろなシステムでいろいろなパスワードが段々と面倒になってきた…
ブラウザに記憶しているので普段は良いけど、突発的なときがパスワードを探し出すのが少し面倒…
ってことで、GitLabでもGoogle OAuth2認証でログインできるようにすれば少し楽になるなと。
サーバ環境
GitLab 12.10.5-ee Omnibusインストール
参考
まずは、Google APIsを設定
https://console.developers.google.com/ にアクセス
画面上のプロジェクトの選択をクリック
![](https://nyan.blog/wp-content/uploads/2020/06/screenshot-1024x655.png)
新しいプロジェクトをクリック
![](https://nyan.blog/wp-content/uploads/2020/06/screenshot-1-1024x779.png)
プロジェクト名など入力して作成ボタンクリック
![](https://nyan.blog/wp-content/uploads/2020/06/screenshot-2-1024x656.png)
さっき作成したプロジェクトに変更して、
OAuth同意画面(画面に画面ってGoogleらしくないな)をクリック。
![](https://nyan.blog/wp-content/uploads/2020/06/screenshot-3-1024x586.png)
User Type は 外部のGoogleアカウントは使う必要がないので、「内部」を選択して作成ボタンをクリック
![](https://nyan.blog/wp-content/uploads/2020/06/screenshot-4-1024x654.png)
アプリケーション名やら承認済みドメインやらを入力して作成する。
![](https://nyan.blog/wp-content/uploads/2020/06/CC429D9D-660B-405E-876B-9B2F29C419F2-709x1024.jpg)
出来上がり!
![](https://nyan.blog/wp-content/uploads/2020/06/54C596F9-C622-417C-962D-9355C1B761C6-1024x646.png)
認証情報→認証情報を作成→OAuthクライアントID をクリック
![](https://nyan.blog/wp-content/uploads/2020/06/A532D4C2-03C6-450E-B830-689CB3242791-1024x646.png)
- アプリケーションの種類:ウェブアプリケーション
- 名前:GitLab(識別できればなんでもよい)
- 承認済みのリダイレクトURI:https://<your domain>/users/auth/google_oauth2/callback
![](https://nyan.blog/wp-content/uploads/2020/06/A2B383FA-24E2-459E-B928-F824FFF37094-1024x692.png)
これで、完成!
GitLab側でクライアントIDとクライアントシークレットを使う。
![](https://nyan.blog/wp-content/uploads/2020/06/E661E2AF-814A-4D1F-8FDF-31F74179DB24-1024x857.png)
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!
![](https://nyan.blog/wp-content/uploads/2020/06/FDAA18AC-058E-491A-BC32-284E0B3497A2-1024x772.png)
ブラウザ上ではGoogleアカウントでログインしている状態で、クリックするとエラー…
既存ユーザーはGoogleアカウントと紐付けしないといけないか…
![](https://nyan.blog/wp-content/uploads/2020/06/5FF0E39A-1C17-414D-8E83-1BDB14807438-1024x772.png)
普通にメールアドレスをパスワードでログインして、探してみるとあった!
右上のアカウントをクリックして、設定をクリック!
![](https://nyan.blog/wp-content/uploads/2020/06/screenshot-5.png)
左側で「アカウント」を選択して、ソーシャルサインインの「Connect」ボタンクリック。
![](https://nyan.blog/wp-content/uploads/2020/06/screenshot-6-1024x681.png)
Googleの認証画面を経て、紐付けされるとこんな感じになる。
![](https://nyan.blog/wp-content/uploads/2020/06/E5E3EDB9-788E-42EC-B146-B5932AC09AAB-1024x195.png)
紐付け先のアカウトが組織外(ドメインが違う)ならどうなるの?
→承認エラーになる。OKです。
![](https://nyan.blog/wp-content/uploads/2020/06/EDFE5A6F-0661-47C9-BE41-85183978D78B-764x1024.png)
GitLabに登録されていないメールアドレスだとどうなるの?
→GitLabにユーザー登録されているが、ブロック状態で登録されている。正しいユーザーなら管理者でログインして、ブロックを解除してあげる。
![](https://nyan.blog/wp-content/uploads/2020/06/B8BA6A30-93FF-4C69-9F6D-0D2BA62F1875-1024x751.png)
まとめ
意外と簡単にGoogle OAuth2認証できたなと思う。
これで少しは楽になるなぁ。
あとは、Wordpressと社内システムに導入すれば結構いい感じで楽になりそうな予感。
コメント