railsでOpenID認証
Ruby on Rails用にOpenID認証のジェネレータがあることに気づいた。
ここからruby-openid-0.9.8.1.zipをダウンロード(Windowsで試しています)。展開した後にまずライブラリをインストールします。
D:\dev\script\rails\ruby-openid-0.9.8.1>ruby setup.rb ---> lib ---> lib/html <--- lib/html ---> lib/openid <--- lib/openid <--- lib ---> lib ---> lib/html <--- lib/html ---> lib/openid <--- lib/openid <--- lib rm -f InstalledFiles ---> lib mkdir -p d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/ install hmac-md5.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/ install hmac-rmd160.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/ install hmac-sha1.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/ install hmac-sha2.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/ install hmac.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/ ---> lib/html mkdir -p d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/html install htmltokenizer.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/html <--- lib/html ---> lib/openid mkdir -p d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install association.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install consumer.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install dh.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install fetchers.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install filestore.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install parse.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install server.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install stores.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install trustroot.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid install util.rb d:/dev/one_click_ruby/lib/ruby/site_ruby/1.8/openid <--- lib/openid <--- lib
これでインストールは完了。次はジェネレータをインストール。
展開したディレクトリの中のexampleディレクトリにrails_openid_login_generatorというディレクトリがある。この中身を以下のフォルダにコピーします。ディレクトリ名がrails_openid_login_generatorじゃなくてopenid_loginになっていることに注意。
C:\Documents and Settings\ma2\.rails\generators\openid_login\
ユーザ名は適当に自分のやつに変える。.railsディレクトリは無ければ作る。
unix系の人は↓こんな感じ。
~/.rails/generators/open_id/
DBを用意します。
CREATE TABLE users ( id serial NOT NULL, openid_url varchar(256), CONSTRAINT users_pkey PRIMARY KEY (id) )
まあこんな感じで。OpenIDではユーザ名もパスワードも不要で,その代わりURLが必要です
ではジェネレータを走らせます。
D:\dev\script\rails\ma2b>ruby script\generate openid_login openid create lib/openid_login_system.rb create app/controllers/openid_controller.rb create test/functional/openid_controller_test.rb create app/helpers/openid_helper.rb create app/models/user.rb create test/unit/user_test.rb create test/fixtures/users.yml create app/views/layouts/scaffold.rhtml overwrite public/stylesheets/scaffold.css? [Ynaq] force public/stylesheets/scaffold.css create app/views/openid create app/views/openid/welcome.rhtml create app/views/openid/login.rhtml create app/views/openid/logout.rhtml create README_LOGIN
一番最後の README_LOGIN が導入の手引きになっているので,一読をお勧めします。
【ここから修正 2006.03.09】
ApplicationControllerに以下の記述を追加します。
require_dependency "openid_login_system" class ApplicationController < ActionController::Base include OpenidLoginSystem model :user end
最後に自分の認証をかけたいコントローラに以下の行を追加します。
class BookmarkController < ApplicationController before_filter :login_required end
【ここまで 2006.03.09】
これでコントローラにアクセスしてみましょう。
Login画面が表示されます。そこで自分のOpenIDに対応したURLを入力します。TypeKeyのユーザでしたら,http://profile.typekey.com/(ユーザ名)/ で行けます。ログインが完了すると,DBにはURLが追加されているはずです。