使用urllib2或请求生成授权摘要标头

时间:2014-01-16 18:59:54

标签: python urllib2 python-requests digest-authentication

我正在尝试生成摘要授权标头,以便在python测试用例中使用。由于代码库的工作方式,重要的是我能够将标头作为字符串。 这个标题看起来像这样

Authorization: Digest username="the_user", realm="my_realm", nonce="1389832695:d3c620a9e645420228c5c7da7d228f8c", uri="/some/uri", response="b9770bd8f1cf594dade72fe9abbb2f31"

我认为我最好的选择是使用urllib2或请求库。

使用urllib2,我已经走到了这一步:

au=urllib2.HTTPDigestAuthHandler()
au.add_password("my_realm", "http://example.com/", "the_user", "the_password")

但我无法从中得到标题。

根据要求,我已经做到了这一点:

requests.HTTPDigestAuth("the_user", "the_password")

但是当我尝试使用它时,在请求中,我遇到了设置领域的错误,我无法弄清楚该怎么做

1 个答案:

答案 0 :(得分:3)

如果你准备好扭曲自己,你可以通过这样的事情得到requests.auth.HTTPDigestAuth课程给你正确的答案:

from requests.auth import HTTPDigestAuth

chal = {'realm': 'my_realm', 'nonce': '1389832695:d3c620a9e645420228c5c7da7d228f8c'}
a = HTTPDigestAuth('the_user', password)
a.chal = chal

print a.build_digest_header('GET', '/some/uri')

如果我使用'the_password'作为用户的密码,则可以得到以下结果:

Digest username="the_user", realm="my_realm", nonce="1389832695:d3c620a9e645420228c5c7da7d228f8c", uri="/some/uri", response="0b34daf411f3d9739538c7e7ee845e92"