
第5回 OpenID Authentication 2.0時代の幕開け
山口 徹
サイボウズ・ラボ株式会社
2008/2/19
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> |
| リスト1 XRDS文書の例 |
端的にいってしまえば、
- Serviceに対応している認証サービスの詳細を記述できる
- Serviceの優先順位を指定できる
- ServiceのエンドポイントURLも記述できる
というような仕様になっていますので、このXRDS文書さえあれば複数のURLベースのIdentityサービスを混在させることができます。XRDS文書を用いてURLベースのIdentityサービスを抽象化するプロトコルをYadisプロトコルといい、Yadis 1.0という仕様で規定されています。より詳しく知りたい人はYadis 1.0の3、6、7節を読むと良いでしょう。
ここまでの話をまとめてディスカバリーのフローを図解すると次のようになります。
![]() |
| 図2 Yadisプロトコル:XRDSベースのディスカバリーの流れ |
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" /> |
| リスト2 OpenID Authentication 2.0ベースでのdelegate設定サンプル |
のうち、実際に使っている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関連の話題を取り扱っていて、ためになるブログをいくつかご紹介します。
- .Nat Zone
- tkudo's weblog
- snippets from shinichitomita’s journal
- まちゅダイアリー
- たけまる
- Yet Another Hackadelic
手前味噌ですが、筆者のブログも最後に付け加えさせていただきました。
次回はOpenID Authentication 2.0をより深く掘り下げる予定です。
3/3 |
| Index | |
| OpenID Authentication 2.0時代の幕開け | |
| Page1 ネットの世界に受け入れられつつあるOpenID OpenID Authentication 2.0での用語 |
|
| Page2 長くて覚えられないURLは覚えなくてもよい User-Supplied Identifierとは何か 新しいディスカバリー 論より証拠、XRIの例 |
|
| Page3 XRDSベースのディスカバリー OpenIDに関するコミュニティと情報源 |
|
OpenIDの仕様と技術 バックナンバー
- 第1回 仕様から学ぶOpenIDのキホン
- 第2回 あなたのサイトをOpenID対応にしている2行の意味
- 第3回 Consumerの実装を知り、OpenIDを使ってみよう
- 第4回 OpenIDをとりまくセキュリティ上の脅威とその対策
- 第5回 OpenID Authentication 2.0時代の幕開け
| Profile |
| 山口 徹(やまぐち とおる) サイボウズ・ラボ株式会社 サイボウズ・ラボ株式会社のプログラマー。 バーテンダーからIT業界に転身後、様々なWeb制作を行い、大規模コミュニティサイトの開発・運用を経て、現在は研究開発の日々。Perl使い。 Perlを中心とした開発のノウハウやネタをShibuya Perl Mongersのイベント等で発表するなど講演活動も行う。 個人の開発日記は「Yet Another Hackadelic」、仕事のブログは「log4ZIGOROu」 |
| OpenIDの仕様と技術 連載インデックス |
- Webを見るだけで――ここまできたiPhoneの脅威 (2010/8/26)
スマートフォンも常にアップデートを――iPhoneだって例外ではありません。iOSへの攻撃例を動画で解説します - 日本的なリスク回避策と、それに代わる技術 (2010/8/20)
持ち運べるデバイスには、さまざまなリスクがある。そのリスク回避の歴史と、回避のための技術動向を3回にわたり解説する - “感染後をケアするエンジン”の必要性 (2010/8/11)
ウイルスを検知する4つのエンジンの裏で、ひっそりと働くエンジンがある。エンジニアはなぜ、その製作に取り組んだのか - クラウドセキュリティにコストをかける覚悟はあるか (2010/8/9)
プライベートクラウドが盛り上がる理由は、それで得する人たちがいるからです。言いなりにならないためには、何をすべき?
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報









