OpenIDの実装をどうするか考えてみる。 仕様に沿って1から全て作るのは時間がもったいない。幸いにも先人たちが作成したライブラリが利用できるので利用することに。
ここに各種言語向けのライブラリが用意されている。
http://wiki.openid.net/Libraries
PHPでOpenID 2.0にも対応しているJanRainのライブラリを選択した。(多言語に展開しているし実績がありそうなので…)
http://www.openidenabled.com/php-openid/
サンプルコードも単純で理解しやすく、完璧ではないがphpDocumentorのドキュメントも用意されている。
今回はServerではなくConsumerを作成するのが目的。流れを理解するのにphpDocのconsumer.phpの説明がとても役に立つ。(OpenIDについてもうまく説明されているので最初からここを見ればよかった)
このライブラリを使った処理の流れ。
- Auth_OpenID_Consumerオブジェクトを作成。(パラメータにAuth_OpenID_FileStoreとPHPセッションを渡す)
- beginメソッドをコールして、Auth_OpenID_AuthRequestオブジェクトを得る。(beginメソッドにOpenIDを渡す)
- 2のredirectURLメソッドをコールしてOpenIDプロバイダにリダイレクトする。(ここで戻り先のURLを指定する)
前半終了。OpenIDプロバイダから戻り先のURLにリダイレクトしてきたら後半開始。
- Auth_OpenID_Consumerオブジェクトを作成。(前半と同じPHPセッションなので、結果、前半と同じ内容のオブジェクトを得るはず)
- completeメソッドをコールして結果を確認。
基本これだけなので簡単だ。 後でテストスクリプトを組んで実験してみよう。