:::: MENU ::::

gitlabのomniauthを利用してgoogleアカウントでログインする

はじめて使ったけど超便利だね ♪
omniauth って Rails で OAuth 対応している ID とかの認証機能を作ってくれる gem なのね。
てっきり統一規格だと思ってた。

gitlab に組み込むのは超簡単。
必要な gem は構築したときに入れてあるので、設定ファイルに追記するだけ。
あ、もちろん google APIs の ID とかは必要だけど。

Google APIs のアカウントを作成

  1. [API Console](https://developers.google.com/:title=Google Developers]の下部にリンクがある[http://code.google.com/apis/console)からログイン。
  2. 「Create Project...」を押下
  3. 管理画面っぽいところに行くので、左カラムの「API Access」を押下
  4. 「Create an OAuth 2.0 client ID...」を押下
  5. どこのサイトに使うものなのかとか入力して「Update」「Create client ID]と押して完了
■Branding information
Product name:    gitlab
Google account:  [email protected]
Home page URL:   http://gitlab.hogehoge.com/


■Client ID for web applications
Client ID:         xxxxxxxxxxxx.apps.googleusercontent.com
Email address:  [email protected]
Client secret:  hogehogefugafuga
Redirect URIs:  http://gitlab.hogehoge.com/users/auth/google_oauth2/callback
JavaScript origins:  http://gitlab.hogehoge.com

Redirect URIs は初期状態だと、gitlab の callback 先と合わないので、
ID を作成した後に /users/auth/google_oauth2/callback に変更します。

config/gitlab.yml の追記

allow_single_sign_on と block_auto_created_users はデフォのほうがいいと思う。
いまはさくっとチェックするために全部 ON にしている。

  omniauth:
# omniauthを有効にするかどうか
enabled: true
# ログインと同時に新規ユーザを作るか
allow_single_sign_on: true
# 新規ユーザのアカウントをロック状態にしておくか
block_auto_created_users: false

## 各プロバイダーの設定
providers:
- { name: 'google_oauth2', app_id: 'xxxxxxxxxxxx.apps.googleusercontent.com',
app_secret: 'hogehogefugafuga',
args: { access_type: 'offline', approval_prompt: '' } }

再起動すればログインページに Sign in with と出てきて、
omniauth によるログインが可能になっているサービスのアイコンが表示される。

# service gitlab stop
# service gitlab start

アイコンを押下すると Google のログイン画面に行き、
ログインすると下記のような権限許可画面に遷移する。

ここで「承認する」を押下すると Redirect URIs で設定した URL に飛び、
gitlab にログインができる。

#承認画面は初回アクセスのみ出て、
#allow_single_sign_on を有効にしていれば、
#ログイン画面も出ずワンクリックでログインできる。

allow_single_sign_on と block_auto_created_users の値により出るエラー

allow_single_sign_on:      true
block_auto_created_users:  true

ユーザの作成は許すが、Admin がロックを外すまで使えませんよという状態。
「Your account is blocked. Retry when an admin has unblocked it.」とログイン画面にアラートが出る。

allow_single_sign_on:      false
block_auto_created_users:  true/false

ユーザの作成はしないので、Admin が手動でやってねという状態。
ログインしようとしているメアドのユーザを作成せずにログインしようとすると、
「There's no such user!」とログイン画面にアラートが出る。

こちらの場合、初回ログイン時にパスワードを決めるように求められるため、
今後は gitlab で設定したパスワードでもログインできるようになる。
(allow_single_sign_o を true にしている場合でも、ログイン後パスワードを設定すればよい)