mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
Patch #1479302: Make urllib2 digest auth and basic auth play together.
This commit is contained in:
parent
a166a91659
commit
b5f2e5cc50
2 changed files with 21 additions and 3 deletions
|
|
@ -779,6 +779,27 @@ class HandlerTests(unittest.TestCase):
|
|||
"proxy.example.com:3128",
|
||||
)
|
||||
|
||||
def test_basic_and_digest_auth_handlers(self):
|
||||
# HTTPDigestAuthHandler threw an exception if it couldn't handle a 40*
|
||||
# response (http://python.org/sf/1479302), where it should instead
|
||||
# return None to allow another handler (especially
|
||||
# HTTPBasicAuthHandler) to handle the response.
|
||||
class TestDigestAuthHandler(urllib2.HTTPDigestAuthHandler):
|
||||
handler_order = 400 # strictly before HTTPBasicAuthHandler
|
||||
opener = OpenerDirector()
|
||||
password_manager = MockPasswordManager()
|
||||
digest_handler = TestDigestAuthHandler(password_manager)
|
||||
basic_handler = urllib2.HTTPBasicAuthHandler(password_manager)
|
||||
opener.add_handler(digest_handler)
|
||||
realm = "ACME Networks"
|
||||
http_handler = MockHTTPHandler(
|
||||
401, 'WWW-Authenticate: Basic realm="%s"\r\n\r\n' % realm)
|
||||
self._test_basic_auth(opener, basic_handler, "Authorization",
|
||||
realm, http_handler, password_manager,
|
||||
"http://acme.example.com/protected",
|
||||
"http://acme.example.com/protected",
|
||||
)
|
||||
|
||||
def _test_basic_auth(self, opener, auth_handler, auth_header,
|
||||
realm, http_handler, password_manager,
|
||||
request_url, protected_url):
|
||||
|
|
|
|||
|
|
@ -846,9 +846,6 @@ class AbstractDigestAuthHandler:
|
|||
scheme = authreq.split()[0]
|
||||
if scheme.lower() == 'digest':
|
||||
return self.retry_http_digest_auth(req, authreq)
|
||||
else:
|
||||
raise ValueError("AbstractDigestAuthHandler doesn't know "
|
||||
"about %s"%(scheme))
|
||||
|
||||
def retry_http_digest_auth(self, req, auth):
|
||||
token, challenge = auth.split(' ', 1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue