Commit 0ea91cb5 authored by Senthil Kumaran's avatar Senthil Kumaran

Issue12541 - Add UserWarning for unquoted realms

parent 34f3fcc2
...@@ -1227,6 +1227,7 @@ class HandlerTests(unittest.TestCase): ...@@ -1227,6 +1227,7 @@ class HandlerTests(unittest.TestCase):
401, 'WWW-Authenticate: Basic realm=%s\r\n\r\n' % realm) 401, 'WWW-Authenticate: Basic realm=%s\r\n\r\n' % realm)
opener.add_handler(auth_handler) opener.add_handler(auth_handler)
opener.add_handler(http_handler) opener.add_handler(http_handler)
with self.assertWarns(UserWarning):
self._test_basic_auth(opener, auth_handler, "Authorization", self._test_basic_auth(opener, auth_handler, "Authorization",
realm, http_handler, password_manager, realm, http_handler, password_manager,
"http://acme.example.com/protected", "http://acme.example.com/protected",
......
...@@ -95,6 +95,7 @@ import socket ...@@ -95,6 +95,7 @@ import socket
import sys import sys
import time import time
import collections import collections
import warnings
from urllib.error import URLError, HTTPError, ContentTooShortError from urllib.error import URLError, HTTPError, ContentTooShortError
from urllib.parse import ( from urllib.parse import (
...@@ -827,6 +828,9 @@ class AbstractBasicAuthHandler: ...@@ -827,6 +828,9 @@ class AbstractBasicAuthHandler:
mo = AbstractBasicAuthHandler.rx.search(authreq) mo = AbstractBasicAuthHandler.rx.search(authreq)
if mo: if mo:
scheme, quote, realm = mo.groups() scheme, quote, realm = mo.groups()
if quote not in ["'", '"']:
warnings.warn("Basic Auth Realm was unquoted",
UserWarning, 2)
if scheme.lower() == 'basic': if scheme.lower() == 'basic':
response = self.retry_http_basic_auth(host, req, realm) response = self.retry_http_basic_auth(host, req, realm)
if response and response.code != 401: if response and response.code != 401:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment