2011-01-26 3 views
1

홈 메이드 사용자 모듈이있는 웹 응용 프로그램이 있습니다. 사용자는 암호가 바이너리 인코딩 된 MySQL 데이터베이스에 저장됩니다 (기본적으로 sha256이지만 다른 알고리즘 (예 : MD5 문자열로 저장된 암호) 지원).Zend 사용자 정의 사용자가있는 OpenId 제공자

지금까지는 좋았지 만 이제는 OpenId 공급자로서 우리의 응용 프로그램을 사용자 모듈에서 제공하는 계정으로 제공하려고합니다. 우리가 젠드 프레임 워크를 사용하기 때문에

내가 열심히 데이터베이스 백엔드를 사용하여 사용자 지정 저장 adapater를 작성하는 것을 야해 추측 Zend_OpenId_Provider_Storage에 delagating있다 그러나 Zend_OpenId_Provider :: 로그인 (아이디, 비밀번호) (즉, OurNamespace_OpenId_Provider_Storage_Db는 Zend_OpenId_Provider_Storage를 확장) : checkUser을 (id, md5 (id.password))

그래서 OurNamespace_OpenId_Provider_Storage_Db :: checkUser()에서 두 번째 인수 인 암호는 우리 자신의 사용자 테이블에서 확인할 수없는 salt (openid)를 포함하는 md5 문자열로 제공됩니다. 암호는 다르게 저장됩니다 ...

이 문제를 해결하기 위해 가장 좋은 방법은 무엇입니까/해결 방법이 있습니까?

미리 감사드립니다.
// Roland

+0

OpenId 제공 업체에 얼마나 정확하게 액세스했는지 몇 가지 코드를 알려주십시오. – akond

답변

1

나는 당신과 같은 문제가있었습니다. 우리는 단지 Zend_OpenId_Provider를 확장 할 수 없으며 checkUser()를 덮어 쓸 수 없으므로 추악한 방법으로 수정했습니다.

Zend_OpenId_Provider를 NameSpace_OpenId_Provider에 복사하고 checkUser()를 편집하여 대신 사용했습니다.

추신 : 누군가 버그를 제출했습니다. 아마 누군가가 버그를 제기했을 것입니다. http://framework.zend.com/issues/browse/ZF-10232

관련 문제