用http摘要认证扭曲信用
我试图通过HTTP摘要式身份验证来实现扭曲的信誉,并且我遇到了一些困难。 我能够使它与checkPassword一起工作,但我不想将密码明确地存储在数据库中。
我在我的密码数据库中存储用户名:realm:password的MD5,并使用以下方法计算它:
from twisted.cred._digest import calcHA1
def calc_ha1(self, password, username=None):
if username is None:
username = self.avatarId
realm = self.digest_factory.digest.authenticationRealm
return calcHA1('md5', username, realm, password, None, None)
我的密码检查器如下所示:
def requestAvatarId(self, credentials):
username = credentials.username
try:
user = self.session.query(models.User).filter_by(username=username).one()
except NoResultFound as e:
return defer.fail(credError.UnauthorizedLogin("No such administrator"))
if credentials.checkHash(user.password_hash):
return defer.succeed(username)
else:
return defer.fail(credError.UnauthorizedLogin("Bad password"))
但是,当checkHash计算HA2并将其与我在数据库中的HA1组合时,它与浏览器发送的内容不匹配。 我用调试器遍历checkHash代码,一切都按我期望的那样运行。 有没有人有想法?
谢谢你
链接地址: http://www.djcxy.com/p/3763.html