
OpenID2.0について調べる機会があったので、メモ代わりに書いてみます。ここ などを参考にしていますが、読み違えていたらご指摘いただけるとありがたいです。(具体的にOpenIDプロバイダとしてlivedoor.comをあげていますが、まだOpenID2.0対応はされていないようです)
OpenIDのおさらい
いままでのOpenIDではURLがIDとなっていました。たとえばhttp://blog.poqu.org/ がぼくのURLであれば、これをIDとすることができます。これを実現する手順は下記の通りです。
- OpenID プロバイダをみつける(ライブドア、はてなとか)
- そのOpenID プロバイダでIDをつくる。
- OpenID プロバイダから提供されている下記コードをhttp://blog.poqu.org/ のHTMLに入れる(まだ実際には入れていません)。
<link rel="openid.server" href="http://auth.livedoor.com/openid/server"> <link rel="openid.delegate" href="http://profile.livedoor.com/hogehoge">
これでOpenIDを利用することができます。実際の利用の流れは下記の通りです。
- たとえばhogeTubeという動画共有サイトがあり、これにはOpenID対応ログイン機能が備わっています
- ユーザAさんは自分のOpenID(=URL)を入力します
- hogeTubeのプログラムは入力されたOpenID(=URL)を調べ、link rel=”openid.server”の値や、link rel=”openid.delegate”の値を元に認証画面へリダイレクトします。
- ユーザはOpenIDプロバイダで登録したIDとPWを入力します
- 入力された情報が正しければ、hogeTubeへとリダイレクトします
OpenID2.0の変更点
OpenIDがバージョン2.0になったことで、主に上のハイライト箇所が拡張されました。ざっくり言うと、OpenID2.0の変更点とは
- OpenIDとして使えるものが増えた(OpenIDプロバイダのURLやXRIなど)=上記ハイライト2に相当
- それによってOpenID対応アプリがIdentifierを見に行く選択肢が増えた =上記ハイライト3に相当
です。ひとつずつ見ていきます。
OpenIDとして使えるものが増えた(OpenIDプロバイダのURLやXRIなど)
まず「2. ユーザAさんは自分のOpenID(=URL)を入力します」部分では、2.0で下記のものが入力可能になりました。
- 自分のURL
(http://profile.livedoor.com/hogehoge)[Claimed Identifier] - OpenID プロバイダが発行しているユーザURL
(http://profile.livedoor.com/hogehoge) [OP-Local Identifier] - OpenID プロバイダのURL
(http://profile.livedoor.com/) [OP Identifier] - XRI
(http://xri.net/=hogehoge/(+blog))[Claimed Identifier]
1,2に関しては、いままでと変わりません。1,2のHTMLには一番上に書いたopenid.serverやopenid.delegateがlink relとして設定されているはずです。今回の変更は、3,4の追加です。3では、OpenID プロバイダのURL(http://profile.livedoor.com/)だけを入力すればよくなったため、長いURLを覚える必要はありません。たとえばhogeTubeのOpenID認証画面には入力フォームはなく、プルダウンでOpenIDプロバイダを選択させるだけでよいのです。ユーザは選択したプロバイダで自分のIDとPWを入力します。
また4に関しては、XRIというものがどういうものかいまだよくつかめていません。。。
それによってOpenID対応アプリがIdentifierを見に行く選択肢が増えた
次に「3. hogeTubeのプログラムは入力されたOpenID(=URL)を調べ、link rel=”openid.server”の値や、link rel=”openid.delegate”の値を元に認証画面へリダイレクトします。」部分の変更では、上記でいろんなものが入力可能となったため、hogeTubeはいろんなIdentifier(openid.serverやopenid.delegateで書かれたURL)を見に行く必要があります。たとえば下記のものがあります(ここからそのまんま引用)。
- hogeTubeに入力されたOpenIDが、XRI(http://xri.net/=hogehoge/(+blog))の場合は、レスポンス本文がXRDS文書となります
- hogeTubeに入力されたOpenIDが、URLの場合は、HTMLのレスポンスヘッダでx-xrds-locationの値で指定されたURL、またはmeta要素でhttp-equiv属性がx-xrds-locationの時の対応する値で指定されたURLに文書があります。あるいはcontent-typeがapplication/xrds+xmlの場合はレスポンス本文にXRDS文書があります
XRDS文書はこちら を参考にしてください(手抜き)。

