Loading...

PHPで開発する人のメモ(仮)

CakePHP で OpenId 認証を試してみた

そろそろやっておかないと?と思って、CakePHP で OpenId 認証を試してみた。


参考サイト


環境

動作確認

ログインボタンを押したら、エラーでちゃってダメ。

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 認証できますね。

≪ CakePHP 1.2 の Helper で$this->view にアクセスできない件ホームとりあえず定義しておきたい3文字以内のオレオレ関数 ≫

Comment

コメントの投稿

 
管理人にのみ表示する
 

Track Back

TB URL

Home

アクセス: オンライン: