“技術者”としてのホリエモンが語るWeb開発とは?

スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷


第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コミュニティはまだ若く、実際にOP、RPをやろうと考えている方や運用している方同士で意見交換を行ったりするべきだと思っています。興味のある方はぜひご参加ください。

●情報源

 筆者の独断ですが、国内のブログでOpenID関連の話題を取り扱っていて、ためになるブログをいくつかご紹介します。

 手前味噌ですが、筆者のブログも最後に付け加えさせていただきました。


 次回は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に関するコミュニティと情報源


Profile
山口 徹(やまぐち とおる)

サイボウズ・ラボ株式会社


サイボウズ・ラボ株式会社のプログラマー。

バーテンダーからIT業界に転身後、様々なWeb制作を行い、大規模コミュニティサイトの開発・運用を経て、現在は研究開発の日々。Perl使い。

Perlを中心とした開発のノウハウやネタをShibuya Perl Mongersのイベント等で発表するなど講演活動も行う。

個人の開発日記は「Yet Another Hackadelic」、仕事のブログは「log4ZIGOROu

OpenIDの仕様と技術 連載インデックス
Security&Trust フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
@IT Sepcial
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Sepcial
ソリューションFLASH