概要
Gitlab には Ruby の OmniAuth を使ったいろいろな認証連携をサポートしています
今回は Google OAuth2 と連携する方法を紹介したいと思います
環境
- Ubuntu 16.04
- GitLab Enterprise Edition 12.9.2-ee
- Google OAuth2 (2020/04/17 時点)
Google OAuth2 ClientID と ClientSecret を取得する
Google Cloud Platform (GCP) に事前にプロジェクトを作成してある想定です
また OAuth2 のクライアントアプリケーションも作成済みを想定しています
まだの場合はこの辺りを参考に OAuth2 クライアントアプリの作成を行ってください
左メニューから「API サービス」->「認証情報」と進みます
そして右の方にある「クライアントID」と「クライアントシークレット」をメモしておきます
OAuth2 のリダイレクト URL を設定する
次に OAuth2 の認証後に Gitlab に戻ってくるリダイレクト URL を設定します
同じように「API サービス」->「認証情報」と進みます
そして一覧から先程「クライアントID」と「クライアントシークレット」を選択し下にある「URI」と「承認済みのリダイレクト URI」に以下を追加しましょう
- URI
- 承認済みのリダイレクト URI
このリダイレクト URI は Gitlab が指定する URI なので変更しないようにしましょう
またドメインの部分は自身の環境に合わせたドメインにしてください
external_url を設定する
過去の記事で Gitlab の初期化時に external_url
は IP を指定していました
Google OAuth2 のリダイレクト URL には IP アドレスの指定はできないのでローカルで解決できるドメインに変更してあげましょう
vim /etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com'
gitlab-ctl reconfigure
そして Mac などのクライアント側に gitlab.example.com
を解決する情報を /etc/hosts
に追記します
sudo vim /etc/hosts
192.168.100.10 gitlab.example.com
gitlab.rb に omniauth_provider の設定を記載する
取得したクライアントID とクライアントシークレットを gitlab.rb に記載します
2 auth factor などを使っていない場合はそのまま同じ設定をすれば動作すると思います
app_id
にクライアントID を app_secret
にクライアントシークレットを記載します
vim /etc/gitlab/gitlab.rb
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['google_oauth2']
gitlab_rails['omniauth_sync_profile_from_provider'] = ['google_oauth2']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_providers'] = [
{
"name" => "google_oauth2",
"app_id" => "00000000000-xxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"app_secret" => "xxxxxxxxxxxxxxxxxxxxxxxxxx",
"args" => { "access_type" => "offline", "approval_prompt" => "" }
}
]
omniauth_block_auto_created_users
は今回 false にしています
これを false にすると Google OAuth2 で認証後すぐにアカウントが作成されすぐにログインできるようになります
true にしておくとアカウントは作成されるが Admin ユーザがログインを許可しない限りログインはできない状態となります (ブロック状態)
今回はテストなので false にしています
各種パラメータの説明などはこちらが参考になると思います
記載できたら reconfigure をかけましょう
gitlab-ctl reconfigure
動作確認
これで Gitlab にアクセスすると Google OAuth のアイコンが追加されています
クリックしてアカウントの作成とログインをしてみましょう
この画面に出てくる情報は GCP の「OAuth の同意画面」で編集できます
アイコンやホームページの情報など正確な情報を載せたい場合には審査が必要になります
これでアカウントの作成とログインができれば OK です
アイコンの情報は読み込まれないようで Gravator と連携するようなので必要であれば Gravator に登録したり自分で Gitlab にアイコンをアップロードしましょう
OAuth 後に以下の画面が出てうまくログインできない場合は gitlab.rb のパラメータの設定を確認してみてください
最後に
Gitlab で Google OAuth2 と連携してみました
今回はアカウントの作成後すぐにログインできるようにしていますが安全にするならブロックを true にしても良いかもしれません
他にも SAML や OpenID との連携もできるのですでに ID 管理している機構がありそれらのインタフェースを持っているなら簡単に連携可能です
Tips: Google アカウントが許可したアプリの一覧を確認するには
ここから Gitlab にログインするために許可したアプリが確認できます
テストなどでもう使わないのであれば権限を削除しておきましょう
0 件のコメント:
コメントを投稿