連載
» 2008年02月19日 00時00分 UPDATE

OpenIDの仕様と技術(5):OpenID Authentication 2.0時代の幕開け (3/3)

[山口徹,サイボウズ・ラボ株式会社]
前のページへ 1|2|3       

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プロトコルといい、Yadis1.0という仕様で規定されています。より詳しく知りたい人はYadis 1.0の3、6、7節を読むと良いでしょう。

 ここまでの話をまとめてディスカバリーのフローを図解すると次のようになります。

図2 Yadisプロトコル:XRDSベースのディスカバリーの流れ 図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をより深く掘り下げる予定です。

Profile

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

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

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

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

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

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


前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。