sfOpenIDPlugin がバグってて困った

Symfony で OpenID を使う時は sfOpenIDPlugin

・・・らしいので、早速追加した。
symfony plugin-install http://plugins.symfony-project.com/sfOpenIDPlugin
これでプラグインフォルダにインストールされた。


設定ファイルをいろいろいじる

#settings.yml
all:
  .settings:
    enabled_modules:        [default, sfOpenIDAuth]
sfOpenIDAuthを有効にする。


#routing.yml
openid_siginin:
  url:  /openid/siginin
  param: { module: sfOpenIDAuth, action: signin }
openid_finishauth:
  url:  /openid/finish
  param: { module: sfOpenIDAuth, action: finish }
BasesfOpenIDAuthActions クラス内に '@openid_finishauth' の記述があるから、openid_finishauth は必ず用意する必要がありそう。


actions.class.php をいじくる

For example:にあるように、actions.class.php ファイルを書き換えたりする。
この場合、$openid に格納される文字列がユーザを指し示すユニークな文字列(OpenID)になる。
// do something
↑のところに、認証後の処理(セッション関連など)を追加すればほとんど終わり。あとは、テンプレートとかエラー処理とか、細かいとこを地道にやるだけ。


テストしてみる

/openid/siginin に対して、POSTで 'openid_url' を投げるだけで、あとは勝手に処理してくれる。便利です。

・・・と思ったんだけど、認証失敗した。


間接的なOpenIDだと認証に失敗する

間接的なOpenIDってのはコレのこと→自分のサイトURLをOpenIDに設定する

どうやら、リクエストの際に openid_url_identity がうまく書き換わっていない模様なので、sfOpenID.class.php の getRedirectURL関数を修正する。[v1.0.0 2007/09/18 現在]

修正前:
public function getRedirectURL()
{
	$params                          = array();
	$params['openid.return_to']      = urlencode($this->approved_url);
	$params['openid.mode']           = 'checkid_setup';
	$params['openid.identity']       = urlencode($this->openid_url_identity);
	$params['openid.trust_root']     = urlencode($this->trust_root);

	return $this->getOpenIDServer() .'?'. $this->arrayToQueryString($params);
}
修正後:
public function getRedirectURL()
{
	$server = $this->getOpenIDServer();
	
	$params                          = array();
	$params['openid.return_to']      = urlencode($this->approved_url);
	$params['openid.mode']           = 'checkid_setup';
	$params['openid.identity']       = urlencode($this->openid_url_identity);
	$params['openid.trust_root']     = urlencode($this->trust_root);
		
	return $server .'?'. $this->arrayToQueryString($params);
}
--
他のプラグインも、もっと調べてみよう。
  • Tic-Toc.info 2007/10/29 21:59
    今回は、symfonyのプラグイン『sfOpenIDPlugin』を試してみます。個人サイトでWebサービスを始めても、メンバー登録してくれる人は少ないと...
Name
Email
Your website or blog
Comment
Security code (CAPTCHA™)