RAILS PRESS RUBY on RAILS, it’s DRY and COOL …

RSS Feed

RAILS PRESS RSS

Tag Cloud

はてなブックマーク - railspress.matake.jp の注目エントリー
象形文字くさび形文字ミイラそろばんの玉そろばんコーラン占いの板?象牙大英博物館
« 前のエントリ
MacOSX 10.4 (Tiger) にPassenger (mod_rails for Apache) をインストール
次のエントリー »
MacOS X (Tiger)でGoogle App EngineのPython開発環境を整える

Posted on
2008/04/20

Tags
OpenID, Plugin, ノウハウ

Keywords


この記事をはてなブックマークに登録 この記事のはてなブックマーク数 この記事を livedoor クリップに登録この記事の livedoor クリップ数 このエントリを del.icio.us に追加
ブックマークに追加する

RailsのOpenID Authentication PluginをXRI対応にする方法

Railsコアチームが開発しているOpenID Authentication PluginがOpenID 2.0に対応しました。(これで以前のようにPatchを当てる必要もなくなる♪)

ただ、まだOpenId Authentication PluginはXRIでのログインには対応していないようなので、OpenID Authentication PluginをXRIに対応させてみました。

Gemで入るruby-openid 2.0.4は、軽くソースを眺めた感じではXRIにも対応しているようなので、OpenId Authentication Pluginのconsumer.beginにXRIを渡してやればいけるはず!ということで、変更点はnormalize_urlメソッドのみ。

RAILS_ROOT/vendor/plugins/openid_authentication/lib/openid_authentication.rb

のnormarize_urlを編集します。

LANG : RUBY
  1. def self.normalize_url(url)
  2. if url=‾/^(xri:¥/¥/|)[=@][-_.!‾*¥'()a-zA-Z0-9;¥/?:¥@&=+¥$,%#]+$/
  3. +    url # XRI
  4. else
  5.     uri = URI.parse(url.to_s.strip)
  6.     uri = URI.parse("http://#{uri}") unless uri.scheme
  7.     uri.scheme = uri.scheme.downcase  # URI should do this
  8.     uri.normalize.to_s # URI
  9. end
  10. rescue URI::InvalidURIError
  11.   raise InvalidOpenId.new("#{url} is not an OpenID URL")
  12. end

とりあえずこれでXRIでのログイン処理はできるようになりました。

ただXRIの正規表現の部分とかがすごい怪しいので、バグなどあればコメントいただけるとうれしいですm_ _m

ちなみに、「OpenId Authentication Pluginのサンプルにはまった。 » RAILS PRESS」で紹介したバグはまだなおってないので、注意してください。(そういえばこのバグには、satokoさんもはまってたみたい)

OpenID Authentication PluginのOpenID 2.0対応に関する詳しい情報は以下。

ps.
OpenID勉強会@DrecomでXRIについて勉強した勢いで、今日「=nov」と「@id*nov」を取得してみました。


この記事がお役に立ちましたら、一言コメントもらえると嬉しいですm_ _m

[...] Authentication Plugin の XRI 対応は RailsのOpenID Authentication PluginをXRI対応にする方法 に書きましたが、OpenID::Yadis::XRI.identifier_scheme [...]


コメントはこちらから




使用可能タグ: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


« 前のエントリ
MacOSX 10.4 (Tiger) にPassenger (mod_rails for Apache) をインストール
次のエントリー »
MacOS X (Tiger)でGoogle App EngineのPython開発環境を整える