はじめて使ったけど超便利だね ♪
omniauth って Rails で OAuth 対応している ID とかの認証機能を作ってくれる gem なのね。
てっきり統一規格だと思ってた。
gitlab に組み込むのは超簡単。
必要な gem は構築したときに入れてあるので、設定ファイルに追記するだけ。
あ、もちろん google APIs の ID とかは必要だけど。
Google APIs のアカウントを作成
- [API Console](https://developers.google.com/:title=Google Developers]の下部にリンクがある[http://code.google.com/apis/console)からログイン。
- 「Create Project...」を押下
- 管理画面っぽいところに行くので、左カラムの「API Access」を押下
- 「Create an OAuth 2.0 client ID...」を押下
- どこのサイトに使うものなのかとか入力して「Update」「Create client ID]と押して完了
■Branding information
Product name: gitlab
Google account: your_account@gmail.com
Home page URL: http://gitlab.hogehoge.com/
■Client ID for web applications
Client ID: xxxxxxxxxxxx.apps.googleusercontent.com
Email address: xxxxxxxxxxxx@developer.gserviceaccount.com
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 にしている場合でも、ログイン後パスワードを設定すればよい)