Skip to content

Commit 323de5c

Browse files
d1pjleclanche
authored andcommitted
Fail authentication on bad authorization base64 encoding
Closes #591
1 parent a4cb67b commit 323de5c

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

oauth2_provider/oauth2_validators.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,11 @@ def _authenticate_basic_auth(self, request):
9696
)
9797
return False
9898

99-
client_id, client_secret = map(unquote_plus, auth_string_decoded.split(":", 1))
99+
try:
100+
client_id, client_secret = map(unquote_plus, auth_string_decoded.split(":", 1))
101+
except ValueError:
102+
log.debug("Failed basic auth, Invalid base64 encoding.")
103+
return False
100104

101105
if self._load_application(client_id, request) is None:
102106
log.debug("Failed basic auth: Application %s does not exist" % client_id)

tests/test_oauth2_validators.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,12 @@ def test_authenticate_basic_auth_not_b64_auth_string(self):
106106
self.request.headers = {"HTTP_AUTHORIZATION": "Basic not_base64"}
107107
self.assertFalse(self.validator._authenticate_basic_auth(self.request))
108108

109+
def test_authenticate_basic_auth_invalid_b64_string(self):
110+
self.request.encoding = "utf-8"
111+
# client_id:wrong_secret
112+
self.request.headers = {"HTTP_AUTHORIZATION": "Basic ZHVtbXk=:ZHVtbXk=\n"}
113+
self.assertFalse(self.validator._authenticate_basic_auth(self.request))
114+
109115
def test_authenticate_basic_auth_not_utf8(self):
110116
self.request.encoding = "utf-8"
111117
# b64decode("test") will become b"\xb5\xeb-", it can"t be decoded as utf-8

0 commit comments

Comments
 (0)