Rack::Auth::OpenIDで認証できた

ruby-openid付属のデモOPを利用して、ローカル内で認証処理を完結できる様にして、なんとか認証できる事を確認。

デモOPを使う様にしてすぐに、RPからOPに認証リクエストを投げられるという所までは確認できました。OPにリダイレクトされて認証確認画面が表示される場面です。デモOPなので、一般のログイン処理ではなくusernameの入力だけですが、とにかく認証処理を進める事ができる様になったわけです。

さて、OPでの認証に失敗する事はありえない(実装的にスルーなはず)ので、後はRPへのリダイレクトが成功すれば一段落です。ところが、ここでまたエラーになるわけです。NoMethodエラー。

問題は、ハンドラで起きていて、どうもエラーストリームに文字列として扱えないオブジェクトが混入された事が原因のようです。そのオブジェクトは、OpenID::Message。

どこで、何が原因で混入したのか、すぐに見つける事ができず悩んでいましたが、冷静になってみれば、簡単です。認証は(おそらく)成功しているだろうと考え、Rack::Auth::OpenID#finishの最後の認証成功レスポンスを疑ったわけです。明らかに怪しげな、レスポンスボディへの要素追加処理が書かれています。

この処理をコメントアウトする事で、ぱっと見でRack::Auth::OpenIDの処理が成功したかと思っています。認証成功後のリダイレクト先URLが表示されましたし。

さて、これはどうしたものでしょうか。バグだと考えてもいいんですかね。ここまであからさまだと、見逃しようがない気がするので、自分の試し方がレアケースな様に思えて仕方がありません。

ひとまず、一段落という事で、rackup configをコミットしました。以下、rackup configです。コードよりコメントがやたらと長いのは気にしないでください。戦の爪痕です。


あ、書き忘れてた気がしますが、勘違いでなければOpenID認証の2.0を使っています。プリントデバッグで格闘中に、2.0のverify経路をたどったはずなので。

GitHubがやたらと重い…。

プロフィール

このブログ記事について

このページは、koshigoeが2008年9月13日 04:02に書いたブログ記事です。

ひとつ前のブログ記事は「Rack::Auth::OpenIDについて探りを入れ始めた」です。

次のブログ記事は「結局、Rack::Auth::OpenIDの使いどころが分からない」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。