Railsアプリで開発時に OpenID 認証をローカルだけで確認する方法
最近、認証部分を OpenID に対応する事も多いみたいで、会社で「開発時に外部の OpenID プロバイダを利用してます?」って聞かれたんで、普段やってる方法を晒してみよう。
利用するのは Ruby 向けの OpenID ライブラリ ruby-openid で、以下のようにインストールする。
% gem install ruby-openid
で、ライブラリの中に OpenID プロバイダのサンプル実装(rails_openid)があるので、それを利用しています。
% cp -pr $WHERE_GEM_HOME/gems/ruby-openid-2.0.x/examples/rails_openid ~/tmp # 起動すると log ディレクトリとか作成されるので、一応どっかにコピー % cp ~/tmp/rails_openid % ruby ./script/server -p 3001
これで http://localhost:3001 とかにアクセスすると、ユーザ登録用のフォームが表示されるので、任意の OpenID のアカウント(例えばhttp://localhost:3001/user/test みたいなの)が発行できます。
後はこれをクライアント(Relying Party)側で入力すれば ok。
これだとクライアント側からのパラメータも確認できるので、開発時にはそれなりに重宝してます。
ただ、Rails 2.0 ではこのサンプルは動作しないので、Rails 1.2.x 系が必要です。
また、ruby-openid 1.x 系のサンプルは Rails 1.2 でも動作しないので、問題無ければ ruby-openid 2.x 系を利用するのがお手軽だと思います。
(追記:20080208)
id:yukizm さんに Rails 2.0 でも動作する方法を教えてもらいました。
% rake rails:update
して、config/enviroment.rb を
config.action_controller.session = { :session_key => "_session_id_2", :secret => "rake secret の結果をコピペ"}
のようにちゃんとアップデートの手順を踏めば、動作しました。