前回、前々回に引き続き、OpenID Authentication 1.1 を読んで仕組みを学びます。
3.概要の、3.3 ConsumerがIDのURLを取得、3.4 Smart modeとdemb mode、3.5 ConsumerがIDを確認 について。
Consumerは、エンドユーザの入力先ページを手に入れて、次にHEAD部分を解析します。”openid.server” と”openid.delegate”(任意)の宣言を得ます(3.3)。悪意ある攻撃に備えて paranoid HTTP ライブラリの利用が推奨されています。また、Consumerは必ずDelegationに対応しなくてはいけません。
OpenID 識別方法にはsmart modeとdamb modeがあります(3.4)。smart mode利用Consumerは、始めに多めに仕事をすることで後ほど楽になるが、state情報をローカルでキャッシュする必要があります。対してdamb mode利用Consumerはstateをまったく保持しなくていいが、余分なHTTPリクエストが必要になります。
smart modeについて、Consumerはまず associate request をIdentity Provederに送信し、共有暗号鍵を要求します(もしキャッシュした暗号鍵を持っていなければ)。この共有暗号鍵は、期限が来るまでのずっと用いられます。共有暗号鍵は平文あるいはDeffie-Hellman-negotiated暗号化テキストで交換されます。Diffie-Hellmanを用いる場合、associate modeでのみ使用されます。checkid_immediateやcheckid_setup modeではConsumerは既に共有暗号化鍵を持っているとみなされます。
ConsumerがIdentity Provederのchedkid_immediate(あるいはcheckid_setup)に対するURLを得たところで、次にUser-Agentを誘導します(3.5)。
次回はいよいよColdFusion 7でコードを書くつもりです。

