CakePHP で OpenId 認証を試してみた
そろそろやっておかないと?と思って、CakePHP で OpenId 認証を試してみた。
参考サイト
環境
- WindowsXP
- XAMPP Lite 1.6.5
- Apache 2.2.6
- PHP 5.2.5
- CakePHP 1.2.0.6311-beta
- PHP OpenID Library 2.0.0
動作確認
ログインボタンを押したら、エラーでちゃってダメ。
Fatal Error (256): Define Auth_OpenID_RAND_SOURCE as null to continue with an insecure random number generator. [APP\vendors\Auth\OpenID\CryptUtil.php, line 52]
Auth_OpenID_RAND_SOURCE(”/dev/urandom”:Linux のカーネル乱数ソースデバイス)が見つからないよと怒られる。。。
# そりゃ、まぁ、Windowsですから・・・
というわけで、コンポーネント:app/controllers/components/openid.php を修正。
22行目の vendor(); を削除して、startUp で OS 判定処理後に vendor(); するようにした。
public function startUp($controller) { $this->controller = $controller; // Windowsの場合は、カーネル乱数ソースデバイスを使用しない if (low(substr(PHP_OS, 0, 3)) === 'win') { define('Auth_OpenID_RAND_SOURCE', null); } vendor('Auth'.DS.'OpenID'.DS.'Consumer', 'Auth'.DS.'OpenID'.DS.'FileStore', 'Auth'.DS.'OpenID'.DS.'SReg'); }
で、実際に認証しようとすると・・・
return_to パラメータが正しくない。
http://localhost/cake1.2/users/login/ をログイン画面にしていたのに、return_to の内容が http://localhost/users/login/ となっている。
というわけで、コントローラー:app/controllers/users_controller.php の7行目を修正。
// $returnTo = 'http://'.$_SERVER['SERVER_NAME'].'/users/login'; $returnTo = 'http://'.env('SERVER_NAME').'/cake1.2/users/login';
結果、無事 OpenId 認証できました。
successfully authenticated!
ちょっと修正が必要だけど、CakePHP だと簡単に OpenId 認証できますね。
Comment
コメントの投稿
Track Back
