Zend OpenId провайдер с пользовательскими пользователями - PullRequest
1 голос
/ 26 января 2011

У меня есть веб-приложение с самодельным пользовательским модулем.Пользователи хранятся в базе данных MySQL с паролями, закодированными в двоичном виде (по умолчанию sha256, однако у нас есть поддержка других алгоритмов; например, пароль хранится в виде строки MD5).

Пока все хорошо, но теперь мы хотим действовать по-своемуприложение в качестве поставщика OpenId, предоставляющего учетные записи из нашего пользовательского модуля.

Поскольку мы использовали Zend Framework, я догадался, что не должно быть так сложно написать собственный адаптер хранилища с использованием бэкэнда базы данных (т. е. OurNamespace_OpenId_Provider_Storage_Db расширяет Zend_OpenId_Provider_StorageI, однако Zend: логин (id, пароль) переносится в Zend_OpenId_Provider_Storage :: checkUser (id, md5 (id.password))

Так что в OurNamespace_OpenId_Provider_Storage_Db :: checkUser () второй аргумент, пароль, предоставляется в виде строки md5включая соль (openid), которую я не могу проверить в нашей собственной таблице пользователей ... пароли хранятся по-разному ...

Что было бы распространенным / наилучшей практикой для решения этой проблемы / ее обхода?

Заранее спасибо!
// Роланд

1 Ответ

1 голос
/ 10 июня 2011

У меня была такая же проблема, как и у вас. Поскольку мы не можем просто расширить Zend_OpenId_Provider и перезаписать checkUser (), я исправил это ужасно.

Я скопировал Zend_OpenId_Provider в NameSpace_OpenId_Provider, отредактировал checkUser () и использовал его вместо этого.

PS: Кто-то подал ошибку, может быть, мы увидим что-то из этого. http://framework.zend.com/issues/browse/ZF-10232

...