用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

上一篇: twisted cred with http digest authentication

下一篇: Glassfish JDBC Realm with Digest Authentication