OpenID Authentication 2.0時代の幕開け:OpenIDの仕様と技術(5)(3/3 ページ)
2008年1月30日、ヤフージャパンがOpenIDの発行をベータサービスとして開始しました。潜在的なユーザーが一気に増えることとなりましたが、ヤフーによるOpenIDの提供は「OpenID 2.0の仕様に対応したサイト」が対象という注意書きが……OpenID 2.0ではいったい何が変わったのでしょうか?(編集部)
XRDSベースのディスカバリー
いままで1.1の仕様では、OPの所在やdelegateしたいIdentifierの指定をHTMLに記述していましたが、これをXRDSというXMLのフォーマットで記述されたものにすることができます。
このXRDS文書の所在をどのようにRPに知らせるかは以下のように2通りの手段があります。
- Claimed IdentifierがXRIの場合は、レスポンス本文がXRDS文書となります
- Claimed IdentifierがURLの場合は、HTMLのレスポンスヘッダでx-xrds-locationの値で指定されたURL、またはmeta要素でhttp-equiv属性がx-xrds-locationの時の対応する値で指定されたURLに文書があります。あるいはcontent-typeがapplication/xrds+xmlの場合はレスポンス本文にXRDS文書があります
XRDS文書、と簡単に書いてしまいましたが、なにを示した文書なのかは実際に具体例を見た方が早いでしょう。筆者のmyopenid.comにおけるXRDSはこちらにありますが、その内容は下記になります。
<?xml version="1.0" encoding="UTF-8"?> <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns:openid="http://openid.net/xmlns/1.0" xmlns="xri://$xrd*($v*2.0)"> <XRD> <Service priority="0"> <Type>http://specs.openid.net/auth/2.0/signon</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/phishing-resistant</Type> <Type>http://openid.net/srv/ax/1.0</Type> <URI>http://www.myopenid.com/server</URI> <LocalID>http://zigorou.myopenid.com/</LocalID> </Service> <Service priority="1"> <Type>http://openid.net/signon/1.1</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/phishing-resistant</Type> <Type>http://openid.net/srv/ax/1.0</Type> <URI>http://www.myopenid.com/server</URI> <openid:Delegate>http://zigorou.myopenid.com/</openid:Delegate> </Service> <Service priority="2"> <Type>http://openid.net/signon/1.0</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <Type>http://schemas.openid.net/pape/policies/2007/06/phishing-resistant</Type> <Type>http://openid.net/srv/ax/1.0</Type> <URI>http://www.myopenid.com/server</URI> <openid:Delegate>http://zigorou.myopenid.com/</openid:Delegate> </Service> </XRD> </xrds:XRDS>
端的にいってしまえば、
- Serviceに対応している認証サービスの詳細を記述できる
- Serviceの優先順位を指定できる
- ServiceのエンドポイントURLも記述できる
というような仕様になっていますので、このXRDS文書さえあれば複数のURLベースのIdentityサービスを混在させることができます。XRDS文書を用いてURLベースのIdentityサービスを抽象化するプロトコルをYadisプロトコルといい、Yadis1.0という仕様で規定されています。より詳しく知りたい人はYadis 1.0の3、6、7節を読むと良いでしょう。
ここまでの話をまとめてディスカバリーのフローを図解すると次のようになります。
OpenID Authentication 2.0時代のdelegateはどうなる?
OpenID Authentication 2.0ベースでもdelegateを行いたい方はHTMLに記載すべき情報としてmyopenidのヘルプを見ると分かりやすいでしょう。
こちらにも同様にサンプルを記載しますが、
<head> <link rel="openid.server" href="OpenID 1.1のIdPのエンドポイントURL" /> <link rel="openid.delegate" href="OpenID 1.1のdelegate先のIdentifier URL" /> <link rel="openid2.local_id" href="OpenID 2.0のOP-Local Identifier URL" /> <link rel="openid2.provider" href="OpenID 2.0のOPのエンドポイントURL" /> <meta http-equiv="x-xrds-location" content="XRDS文書のURL" />
のうち、実際に使っているOPに必要なURLの該当する要素に値を記述すれば問題なくdelegateを使うことができます。
OpenIDに関するコミュニティと情報源
さて、最後に少しOpenIDのコミュニティと情報源をご紹介します。
●コミュニティ
例えば以下のようなコミュニティがあります。
- openid.net内のdiscussページ
- irc://irc.freenode.net#openid(freenodeにある公式のIRCチャンネル)
- openid-ja(Googleグループ)
- Sig-japanのメーリングリスト
- irc://irc.freenode.net#openid-ja(日本の有志によるIRCチャンネル)
特に国内のOpenIDコミュニティはまだ若く、実際にOP、RPをやろうと考えている方や運用している方同士で意見交換を行ったりするべきだと思っています。興味のある方はぜひご参加ください。
●情報源
筆者の独断ですが、国内のブログでOpenID関連の話題を取り扱っていて、ためになるブログをいくつかご紹介します。
手前味噌ですが、筆者のブログも最後に付け加えさせていただきました。
次回はOpenID Authentication 2.0をより深く掘り下げる予定です。
Profile
山口 徹(やまぐち とおる)
サイボウズ・ラボ株式会社のプログラマー。
バーテンダーからIT業界に転身後、様々なWeb制作を行い、大規模コミュニティサイトの開発・運用を経て、現在は研究開発の日々。Perl使い。
Perlを中心とした開発のノウハウやネタをShibuya Perl Mongersのイベント等で発表するなど講演活動も行う。
個人の開発日記は「Yet Another Hackadelic」、仕事のブログは「log4ZIGOROu」
Copyright © ITmedia, Inc. All Rights Reserved.