使用http摘要认证扭曲信誉

时间:2014-03-28 16:58:09

标签: python http authentication twisted digest

我试图通过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代码,一切都按照我的预期运行。有没有人有想法?

由于 -s

0 个答案:

没有答案