OpenID1.1を理解するためのメモ

OpenIDの概念が全く分からないところから、少しは理解できた(今ココ)ので、こうすれば少しは理解が早まるんじゃないかな?
というところをメモしておきます。


・繰り返し読んだサイト一覧

サンプルソースをアップロードしているサイト


繰り返し読んだサイト一覧の1番目にあるのが、openid1.1の仕様書です。
まずは印刷して手元に置いておきましょう。まだ読まなくてよいです。


OpenIDでは大きく分けて、EndUser, Consumer, IdP と三者が関与します。
シーケンス図等でそれぞれの立ち位置を理解することが大事です。


その観点から、以下2つの連載を繰り返し読みましょう。


上記の記事中に分かりやすい3者間の図がいくつかあります。
どちらか一方では情報が足りないので両方読みましょう。
この時点で、OpenIDのやり取りにはConsumer側が共通鍵情報を保持するかしないかで、

  1. smartモード
  2. dumbモード

の2種類あることが分かればOkです。

  1. smartモード
    1. ConsumerがIdPに対して、openid.mode=associate を実行し、共通鍵を共有する。このときassoc_handle情報などをConsumerは保持する必要がある。
    2. ConsumerがIdPに対して、openid.mode=checkid_setup or checkid_immediate を実行して、IdPに対して認証確認 or 認証依頼を行う。
    3. Consumerがcheckid*モードのレスポンスを associateモード時に取得した共通鍵情報でチェックして、認証結果を確認する。
  2. dumbモード
    1. ConsumerがIdPに対して、openid.mode=checkid_setup or checkid_immediate を実行して、IdPに対して認証確認 or 認証依頼を行う。
    2. ConsumerがIdPに対して、opneid.mode=check_authentication を実行して、checkid*のレスポンスが正しいかをIdPへ問い合わせる。


次に perl 使いの方は上記「サンプルソースをアップロードしているサイト」で紹介している、
たけまるさん(http://teahut.sakura.ne.jp/b/2007-12-30-1.html)のエントリーから、Consumer、IdPのサンプルソースをダウンロードして触ってみましょう。


サンプルソースが動かせるってことは、CatalystやNet::OpenID::Server, Net::OpenID::Consumer がインストール済みだと思うので、
openid.mode を最初に印刷した1.1の仕様書とサンプルソース + Net::OpenID::* のソースを併せて読んでいくと、何をしているか分かってきます。
Net::OpenID::* は内容がシンプルで理解しやすいですよ。


いじょ