OpenIDにかんするさまざまな疑問を解消していく本連載。今回は、OpenID Authentication 2.0からIdentifierとして採用されたXRIについて解説する。
はじめまして。OpenIDに関する資料を読んでいると、「XRI」という用語を目にしました。URLやURIのような語句と似たようなものなのだと推察しているのですが、XRIとは何かを教えてください。
OpenID Authentication 2.0からIdentifierとして採用されたXRI(eXtensible Resource Identifier)ですが、これはいったい何者なのでしょうか。XRIの仕様群は膨大ですが、要点はそんなに難しい話ではありません。
XRIのシンタックスですが、おおむね次のような構成になっています。
'xri://' authority '/' path '?' query '#' fragment
読み方としてはシングルクオートで囲まれた部分は文字列そのもので、「authority」「path」「query」「fragment」は部位でありおのおの細かい記述ルールがあります。スペースに意味はありません。
このルールに当てはまる実際の例としては、
などがあります。ただし見慣れないシンボルが多数あるかと思います。細かいルールはここでは述べませんが、authority部の先頭にある“@”などは重要な意味を持っています。この部分の文字列はGlobal Context Symbol(以下GCS)といい、OpenIDに密接に関係するのは“@”と“=”です。
先ほど、GCSのうちOpenIDに密接に関係するのは“@”と“=”と紹介しましたが、この2つは、以下のルールで使い分けます。
例を挙げるなら、
などといった記述が可能になるわけです。この“@”や“=”で始まるXRIをi-nameといいます。
ただし、このGCSは各自が好きなものを自由に名乗れる訳ではなく、i-name providerというサービスで購入する必要があります。筆者はlinksafeというi-name providerで自分のi-name(=zigorou)を取得してみましたが、linksafeでは、個人用途(“=”で始まるi-name)は年12ドル、企業などの用途(“@”で始まるi-name)は年55ドルとなっています。これはURIでいうところのドメイン名に近いものだと思っていただいて構いません。
さて、URIで実際に示された所在とリソースそのものをわれわれはどのように知るでしょうか。基本的な流れとしては、必要であればDNSに問い合わせることで名前解決を行い、そのサーバに接続し、パスをサーバに示しリソースを得るという流れになると思います。
XRIも少し似ていますが、DNSではなくXRI Proxy Resolverというサービスで「解決」します。ここでいう解決とは、そのXRIに対してどのようなサービスが利用可能かを表すXML文書を取得することを指し、得られるXML文書を「XRDS文書」と呼びます。なお、この「解決」の正しい名称はXRI Resolutionといいます。
だいぶ前置きが長くなってしまいましたが、例えば「xri://=zigorou」であれば、「xri://」を省略して、
http://xri.net/=zigorou?_xrd_r=application/xrds+xml
のようなhttp(s)のリクエストを送れば、XRDS文書が返ってきます。curlコマンドなどで実際に打ってみて確かめてみると良いでしょう。XRDS文書の中身に関してはまた別の機会に解説したいと思います。
サイボウズ・ラボで研究開発にいそしむPerlハッカー。Perlを中心とした開発のノウハウやネタをShibuya Perl Mongersのイベントで発表するなど講演活動も行う。最近ではOpenIDの実装方法や考察などをブログ「Yet Another Hackadelic」などで書き連ねている。山口氏へのコンタクトはこちらから。
Copyright © ITmedia, Inc. All Rights Reserved.