勉強の為に転載しました。
http://d.hatena.ne.jp/suer/20130530/redmine_oauth
2013-05-30
Redmine・Gitlab・Jenkins のログインパスワードの管理が大変になったので OAuth 化した
アカウントを一つに統合したい。ということでやってみました。
環境
- Redmine 2.3.0
- Jenkins 1.499
- Gitlab 5.2
方針
Redmine に OAuth プロバイダの機能をつける
Jenkins の認証を OAuth に対応する
@mallowlabs さんがあっさり作ってくれました。
Gitlab の認証を OAuth に対応する
Gitlab は Omniauth でのログインに対応しているので、Redmine の OAuthを使って認証するような Strategy を書いて config/initializers に突っ込みました。
こんなふうに書いています。
module OmniAuth module Strategies class Redmine < OmniAuth::Strategies::OAuth option :client_options, { :authorize_url => 'https://dev.example.com/redmine/oauth/authorize', :request_token_url => 'https://dev.example.com/redmine/oauth/request_token', :access_token_url => 'https://dev.example.com/redmine/oauth/access_token' } uid { raw_info['user']['id'] } info do { 'nickname' => raw_info['user']['mail'], 'email' => raw_info['user']['mail'], 'name' => "#{raw_info['user']['lastname']} #{raw_info['user']['firstname']}" } end def raw_info @raw_info ||= MultiJson.decode(access_token.get("https://dev.example.com/redmine/oauth/user_info.json").body) end end end end
Omniauth の Strategy の書き方はこちら。
さらに、assets/authbuttons/redmine_32.png に適当なアイコンを置いておくと、こんなふうにログインフォームの下に Redmine の OAuth へのリンクが設置されます。
0 コメント:
コメントを投稿