TOP情報セキュリティ> 第4回:OpenIDの仕様を改めて復習してみよう (3/3)

使って広がるOpenIDの輪

使って広がるOpenIDの輪

第4回:OpenIDの仕様を改めて復習してみよう

著者:はてな  水野 貴明

公開日:2008/1/9(水)

OpenID 2.0

さて、本連載も最後になりました。最後は「第3回:IdPサンプルでログイン機能を実装」でも少し紹介したOpenIDのバージョン2.0について触れておきましょう。

OpenIDのバージョン 1.1とバージョン2.0では使用される用語が変ったこと以外にも、Identifierのルール拡張などが行われています。バージョン2.0でも1.1と同様に「http:」もしくは「https:」ではじまるURL(URI)をIdentifierにすることも可能ですが、それ以外に「Yadis」と呼ばれるプロトコルを利用できるようになりました。これはOpenIDのIdentifier URLに埋め込まれたlink要素と同様、Webページ内にあるメタ情報を自動取得するための共通規格です。

PHP OpenIDのバージョン2系のServerのサンプルは、OpenID 2.0を利用したものになっています。Identifier URLも用意されるようになっているので、そのURLにアクセスしてそのHTMLをチェックしてみましょう。図のような要素が埋め込まれているはずです。

これがOpenID 2.0のIdentifierのサンプルです。さらに、このlink要素で指定されているURLにアクセスすると、「XRDS(Extensible Resource Descriptor Sequence)」と呼ばれるデータ形式のXMLデータをみることができます。Consumerはこのデータにアクセスすることで、サーバの場所などを知ることができるようになっています。

OpenID 2.0ではこのYadisを利用した方法のほかに、1.1と同じように、link要素でOP(IdP)そのもののURLを指定することができます。しかしXRDSを利用した方が、より多くの情報を含めることができます。例えば上記の例の中に「priority」という記述があることからもわかるように、複数のOPを優先順位をつけた上で指定し、負荷を分散させることが可能になります。

Identifier URLの記述とXRDSで書かれたIdentity
図3:Identifier URLの記述とXRDSで書かれたIdentity
(画像をクリックすると別ウィンドウに拡大図を表示します)

最後に

4回に渡り、OpenIDの仕組みとサンプルを用いた実際の実装について解説してきました。駆け足ではありましたが、OpenIDの仕組みの概要をつかんでいただけたのではないかと思います。

さらに詳しい内容は、英語ではありますが、OpenIDの公式サイト上にある仕様書(http://openid.net/developers/specs/)を参考にしてください。特にOpenID 1.1の仕様書はシンプルで読みやすいので、その基本的な仕組みを理解した上でなら、比較的簡単に読みこなすことができるでしょう。

そこでは、実際のやりとりの詳しいパラメータや暗号化の方法などが述べられています。そしてOpenID 1.1が理解できれば、それを拡張したOpenID 2.0の仕様についても、理解しやすくなるでしょう。

OpenIDは、最初に登場してから2年あまり、最近ようやく注目が集まるようになってきました。しかし、まだ対応しているサービスは少なく、実装のされ方も微妙に違っている部分もあることから、今後どうこれが広まっていくのか、まだよくわからない部分もあるのが現状です。

さらに、誰でも認証サーバ(IdP)を立てることができるため、そのIDをどこまで信頼するのか、自分のサービスの規約に同意しておらず、連絡先さえもわからないかもしれないユーザに対して、どこまでサービスの利用を許可できるのか、といった管理的/法律的な問題もでてきてしまいます。

しかし「1つのIDをさまざまなサービスで使うための共通の規格が存在する」ということは非常に意味のあることです。これからどう広まっていくのか、そこでそれをどう活用していくのか、といった点は、これからも注目すべきトピックだといえるでしょう。


前のページ  1  2  3


株式会社はてな 水野 貴明
著者プロフィール
株式会社はてな  水野 貴明
1973年東京生まれ。エンジニア兼技術系ライター。株式会社はてな勤務。近著に「俺流Amazonの作り方」(アスキー)、「詳解RSS〜RSSを利用したサービスの理論と実践」(ディー・アート)など。趣味はラテン音楽と海外旅行と神輿。主な原稿の執筆場所はスターバックスと通勤電車の中。


INDEX
第4回:OpenIDの仕様を改めて復習してみよう
  OpenIDの仕様を改めて復習してみよう
  checkid_immediateを利用したConsumerを作成する
OpenID 2.0