2008-06-20
Ruby OpenID Libraryに付属しているRP、OPのサンプルを動かしてみる
特集:いますぐ使えるOpenID|gihyo.jp … 技術評論社
いますぐ使えるOpenID:第2回 OpenIDライブラリに付属しているRPサーバを動かしてみる|gihyo.jp … 技術評論社
を参考に、Ruby OpenID Libraryに付属するRPのサンプルを動かしてみた。
Ruby OpenID Libraryのインストール
RubyGemsを使ってインストールする。
$ su - # gem install ruby-openid Successfully installed ruby-openid-2.0.4 1 gem installed Installing ri documentation for ruby-openid-2.0.4... Installing RDoc documentation for ruby-openid-2.0.4... # exit
インストールされたことを確認。
$ gem list | grep openid ruby-openid (2.0.4)
インストールの${RUBYLIB}は環境によってことなるが、${RUBYLIB}/gems/1.8/gems/ruby-openid-2.0.4/
は僕の環境では下記となった。
/usr/lib/ruby/gems/1.8/gems/ruby-openid-2.0.4/
サンプルrails_openidの実行準備
サンプルのrails_openidをホームにコピーする。dbディレクトリとlogディレクトリが存在しないので、(実行するとrailsが勝手に作るがトラブルを避けるために)作成しておく。
$ cp /usr/lib/ruby/gems/1.8/gems/ruby-openid-2.0.4/examples/rails_openid ~/ $ cd ~/rails_openid $ mkdir db $ mkdir log
サンプルではSQLite3を使うようになっている。このまま使える環境ならそれでよいが、ぼくはPostgreSQLしかセットアップしていないのでPostgreSQLを使うように修正する。
>>config/database.yml development: adapter: sqlite3 database: db/development.sqlite3
これを以下のように修正。
>>config/database.yml postgresql: adapter: postgresql database: rails_server_development username: foo password: bar
データベースrails_server_developmentを作成しておく必要あり。
$ createdb rails_server_development
ここらで一丁、試しに起動しておくか。(実行権限が設定されていないのでrubyを忘れず)
$ ruby script/server => Booting WEBrick... Your config/boot.rb is outdated: Run "rake rails:update".
なんか叱られた。言われたとおりしてみる。
$ rake rails:update (in /home/tokusima/rails/rails_openid) install -c -m 0755 /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/tasks/../../bin/dbconsole script/dbconsole install -c -m 0755 /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/tasks/../../bin/performance/request script/performance/request install -c -m 0755 /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/tasks/../../bin/process/inspector script/process/inspector
再び起動。
$ ruby script/server => Booting WEBrick... ******************************************************************* * config.breakpoint_server has been deprecated and has no effect. * ******************************************************************* => Rails 2.1.0 application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2008-06-20 23:52:01] INFO WEBrick 1.3.1 [2008-06-20 23:52:01] INFO ruby 1.8.5 (2006-08-25) [i386-linux] [2008-06-20 23:52:01] INFO WEBrick::HTTPServer#start: pid=24224 port=3000
さっそく、
http://localhost:3000/consumer
へアクセスしてみると、「500 Internal Server Error」となる。
ログを確認する。
>>log/development.log Status: 500 Internal Server Error A secret is required to generate an integrity hash for cookie session data. Use config.action_controller.session = { :session_key => "_myapp_session", :secret => "some secret phrase of at least 30 characters" } in config/environment.rb /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/session/cookie_store.rb:90:in `ensure_secret_secure' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/session/cookie_store.rb:59:in `initialize' /usr/lib/ruby/1.8/cgi/session.rb:273:in `new' /usr/lib/ruby/1.8/cgi/session.rb:273:in `initialize_without_cgi_reader' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/cgi_ext/session.rb:39:in `initialize' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/cgi_process.rb:132:in `new' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/cgi_process.rb:132:in `session' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/cgi_process.rb:168:in `stale_session_check!' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/cgi_process.rb:116:in `session' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:1135:in `assign_shortcuts_without_flash' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/flash.rb:166:in `assign_shortcuts' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:523:in `process_without_filters' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/filters.rb:569:in `process_without_session_management_support' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/session_management.rb:130:in `process' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/base.rb:389:in `process' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:149:in `handle_request' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:107:in `dispatch' /usr/lib/ruby/1.8/thread.rb:135:in `synchronize' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:104:in `dispatch' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:120:in `dispatch_cgi' /usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/dispatcher.rb:35:in `dispatch' /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick_server.rb:112:in `handle_dispatch' /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick_server.rb:78:in `service' /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start' /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' /usr/lib/ruby/1.8/webrick/server.rb:92:in `each' /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' /usr/lib/ruby/1.8/webrick/server.rb:82:in `start' /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/webrick_server.rb:62:in `dispatch' /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/commands/servers/webrick.rb:66 /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' /usr/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require' /usr/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:354:in `new_constants_in' /usr/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:509:in `require' /usr/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/commands/server.rb:39 /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' script/server:3
画面からはみ出して見にくくなってしまているが、2行目より。
A secret is required to generate an integrity hash for cookie session data. Use config.action_controller.session = { :session_key => "_myapp_session", :secret => "some secret phrase of at least 30 characters" } in config/environment.rb
とのことなので、言われたとおりにenvironment.rbに追記する。
>>config/environment.rb Rails::Initializer.run do |config| ...略... # See Rails::Configuration for more options config.action_controller.session = { # 追記 :session_key => "_myapp_session", # 追記 :secret => "some secret phrase of at least 30 characters" # 追記 } # 追記 end
もちろん、_myapp_session は、_rails_openid_session などと任意の文字列に変え、some secret phrase of at least 30 characters は推測の難しい30文字以上の文字列に変える必要がある。
再び、
http://localhost:3000/consumer
へアクセスしてみると画面が表示されました。
http://localhost:3000/
へアクセスするとOPのサンプルが動作しているのがわかる。
- 50 http://www.google.co.jp/search?q=ruby-openid&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja-JP-mac:official&client=firefox-a
- 43 http://www.google.co.jp/search?q=ruby+openid&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 42 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=Ckf&q=rails+2.1+sample&btnG=検索&lr=
- 32 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLD,GGLD:2005-24,GGLD:ja&q=config/boot.rb+is+outdated:+Run+"rake+rails:update".
- 31 http://gihyo.jp/dev/feature/01/openid/0002
- 30 http://www.google.co.jp/search?q=ruby+openid&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja-JP:official&client=firefox-a
- 24 http://www.google.co.jp/search?q=ruby-openid&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:ja:unofficial&client=firefox-a
- 20 http://www.google.co.jp/search?q=Your+config/boot.rb+is+outdated:+Run+"rake+rails:update"&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 17 http://www.google.co.jp/search?q=A+secret+is+required+to+generate+an+integrity+hash+for+cookie+session+data.+Use+config.action_controller.session&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 17 http://www.google.co.jp/url?sa=t&rct=j&q=ruby-openid&source=web&cd=2&ved=0CCkQFjAB&url=http://d.hatena.ne.jp/RunOnRails/20080620/1213972898&ei=QtegTp3oNNDNrQeo3eThAg&usg=AFQjCNHGWXFMBXYmQNfnmbHW9sa8HNXEjA&sig2=mLHQvmB98uSvt7FFkKox4Q


