2011-01-26 20 views
1

私は手作りのユーザモジュールを備えたWebアプリケーションを持っています。ユーザーは、パスワードをバイナリでエンコードしたMySQLデータベースに格納されます(デフォルトではsha256ですが、他のアルゴリズム、たとえばMD5文字列として保存されたパスワードなど)。ZendカスタムユーザのOpenIdプロバイダ

これまでのところ良いことだが、今私たちのアプリケーションをOpenIdプロバイダとして動作させ、ユーザーモジュールからアカウントを提供したいと考えている。

我々はしかしZend_OpenId_Provider ::ログイン(ID、パスワード)Zend_OpenId_Provider_Storageにdelagatingされる(すなわちOurNamespace_OpenId_Provider_Storage_DbがZend_OpenId_Provider_Storageを拡張する)私はそれがハードバックエンドのデータベースを使用してadapater独自のストレージを記述することになるはずの推測Zend Frameworkのを使用するので::チェックユーザー( id、md5(id.password))

したがってOurNamespace_OpenId_Provider_Storage_Db :: checkUser()の2番目の引数であるパスワードは、自分のユーザーテーブルでチェックできないsalt(openid)を含むmd5文字列として提供されています。パスワードは別の方法で保存されます...

この問題を解決するにはどうすればよいですか/回避策ですか?

ありがとうございます!
// Roland

+0

あなたはOpenIdプロバイダにどの程度正確にアクセスしていますか? – akond

答えて

1

私はあなたと同じ問題がありました。 Zend_OpenId_Providerを拡張してcheckUser()を上書きすることはできないので、私はそれを醜い方法で修正しました。

Zend_OpenId_ProviderをNameSpace_OpenId_Providerにコピーし、checkUser()を編集して代わりに使用しました。

PS:誰かがバグを提出しました。多分、私たちはそれから何かを見るでしょう。 http://framework.zend.com/issues/browse/ZF-10232

関連する問題