OpenIDサンプルでOpenIDの理解を試みる。
OpenIDは今や週刊Asciiで特集が組まれるほどメジャーな存在となった。とりあえず情報をあつめるとこんな感じ。
- 仕様
- 各社の取り組み
- OpenIDが使えるサイトのまとめ
- ツール
昨日立ち上げたruby-openidライブラリ付属のOpenIDサンプルアプリを使って、何がどうなってるのか調べてみる。
RPからOPへの転送。
まずはRP側画面にOpenID文字列を入れるところから。
先ほどOPサンプルにログインして得たOpenIDのURL文字列を貼り付け、チェックボックスをすべてチェックせずに進むと、OpenIDのRP->OPという転送が行われる。実際HTTPのやりとりを見てみると以下のようになっていた。(主要部分のみ抜粋)
RP側でOpenIDのURLを入力:
GET /consumer/start?openid_identifier=http%3A%2F%2Fopenid-sample.hoge.co.jp%2Fuser%2Fshimonoakio HTTP/1.1
送信パラメタ
-
- openid_identifier
このパラメタは、おそらくOpenIDが定めるものではないような気がする。(要確認)
OPへの要求:
GET /server?openid.assoc_handle=%7BHMAC-SHA1%7D%7B485f33b4%7D%7B2WlJ%2BQ%3D%3D%7D&openid.claimed_id=http%3A%2F%2Fopenid-sample.hoge.co.jp%2Fuser%2Fshimonoakio&openid.identity=http%3A%2F%2Fopenid-sample.hoge.co.jp%2Fuser%2Fshimonoakio&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.realm=http%3A%2F%2Fopenid-sample.hoge.co.jp%2Fconsumer&openid.return_to=http%3A%2F%2Fopenid-sample.hoge.co.jp%2Fconsumer%2Fcomplete HTTP/1.1
送信パラメタ
OPでのログイン
ここでYesを選ぶと以下のように元のRP画面にて、OpenIDでログインしたよという旨のメッセージが表示される。