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 の結果をコピペ"}

のようにちゃんとアップデートの手順を踏めば、動作しました。