:::: MENU ::::

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

Pocket

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

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

Google APIsのアカウントを作成

1. Google Developersの下部にリンクがあるAPI 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:  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にしている場合でも、ログイン後パスワードを設定すればよい)

Pocket


So, what do you think ?