mirror of
https://github.com/cwinfo/powerdns-admin.git
synced 2024-11-09 15:10:27 +00:00
Merge pull request #1454 from nkukard/nkupdates-fix-basic-auth-exception2
fix(auth:basic): Basic auth exception handling improvement
This commit is contained in:
commit
4fa8bf2556
@ -60,15 +60,31 @@ def login_via_authorization_header_or_remote_user(request):
|
|||||||
# Try to login using Basic Authentication
|
# Try to login using Basic Authentication
|
||||||
auth_header = request.headers.get('Authorization')
|
auth_header = request.headers.get('Authorization')
|
||||||
if auth_header:
|
if auth_header:
|
||||||
|
|
||||||
|
if auth_header[:6] != "Basic ":
|
||||||
|
return None
|
||||||
|
|
||||||
auth_method = request.args.get('auth_method', 'LOCAL')
|
auth_method = request.args.get('auth_method', 'LOCAL')
|
||||||
auth_method = 'LDAP' if auth_method != 'LOCAL' else 'LOCAL'
|
auth_method = 'LDAP' if auth_method != 'LOCAL' else 'LOCAL'
|
||||||
auth_header = auth_header.replace('Basic ', '', 1)
|
|
||||||
|
# Remove "Basic " from the header value
|
||||||
|
auth_header = auth_header[6:]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
auth_header = str(base64.b64decode(auth_header), 'utf-8')
|
auth_header = str(base64.b64decode(auth_header), 'utf-8')
|
||||||
username, password = auth_header.split(":")
|
except (UnicodeDecodeError, TypeError) as e:
|
||||||
except TypeError as e:
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
# NK: We use auth_components here as we don't know if we'll have a :, we split it maximum 1 times to grab the
|
||||||
|
# username, the rest of the string would be the password.
|
||||||
|
auth_components = auth_header.split(':', maxsplit=1)
|
||||||
|
|
||||||
|
# If we don't have two auth components (username, password), we can return
|
||||||
|
if len(auth_components) != 2:
|
||||||
|
return None
|
||||||
|
|
||||||
|
(username, password) = auth_components
|
||||||
|
|
||||||
user = User(username=username,
|
user = User(username=username,
|
||||||
password=password,
|
password=password,
|
||||||
plain_text_password=password)
|
plain_text_password=password)
|
||||||
|
Loading…
Reference in New Issue
Block a user