OpenID1.1を理解するためのメモ
OpenIDの概念が全く分からないところから、少しは理解できた(今ココ)ので、こうすれば少しは理解が早まるんじゃないかな?
というところをメモしておきます。
・繰り返し読んだサイト一覧
- http://openid.net/specs/openid-authentication-1_1.html
- http://www.atmarkit.co.jp/fsecurity/rensai/openid01/openid01.html
- http://www.thinkit.co.jp/free/article/0712/7/1/
- http://www.pp.iij4u.or.jp/~kwi/openid/dsa-specs_ja.html
・サンプルソースをアップロードしているサイト
- http://teahut.sakura.ne.jp/b/2007-12-30-1.html - perl(Consumer, IdP)
- http://www.thinkit.co.jp/free/article/0712/7/2/ - php(Consumer)
- http://www.thinkit.co.jp/free/article/0712/7/3/ - php(IdP)
繰り返し読んだサイト一覧の1番目にあるのが、openid1.1の仕様書です。
まずは印刷して手元に置いておきましょう。まだ読まなくてよいです。
OpenIDでは大きく分けて、EndUser, Consumer, IdP と三者が関与します。
シーケンス図等でそれぞれの立ち位置を理解することが大事です。
その観点から、以下2つの連載を繰り返し読みましょう。
- atmarkitで連載されている サイボウズ・ラボ山口さんの記事
- thinkitで連載されている 元はてなの水野さん(id:mizuno_takaaki)の記事
上記の記事中に分かりやすい3者間の図がいくつかあります。
どちらか一方では情報が足りないので両方読みましょう。
この時点で、OpenIDのやり取りにはConsumer側が共通鍵情報を保持するかしないかで、
- smartモード
- dumbモード
の2種類あることが分かればOkです。
- smartモード
- dumbモード
- ConsumerがIdPに対して、openid.mode=checkid_setup or checkid_immediate を実行して、IdPに対して認証確認 or 認証依頼を行う。
- 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::* は内容がシンプルで理解しやすいですよ。
いじょ