#!/usr/bin/env python3 import base64 import os import sys from urllib.parse import parse_qs credentials = base64.b64decode(os.environ.get('HTTP_AUTHORIZATION', ' Og==').split(' ')[1]).decode().split(':') username = credentials[0] password = ':'.join(credentials[1:]) query = parse_qs(os.environ.get('QUERY_STRING', ''), keep_blank_values=True) expectedUsername = query.get('username', ['username'])[0] expectedPassword = query.get('password', ['password'])[0] realm = query.get('realm', [os.environ.get('REQUEST_URI', '')])[0] sys.stdout.write( 'Cache-Control: no-store\r\n' 'Connection: close\r\n' 'Content-Type: text/html\r\n' ) if username != expectedUsername or password != expectedPassword: sys.stdout.write( 'WWW-Authenticate: Basic realm="{realm}"\r\n' 'status: 401\r\n\r\n' 'Sent username:password of ({username}:{password}) which is not what was expected\n'.format(realm=realm, username=username, password=password) ) else: sys.stdout.write('\r\nAuthenticated as user: {} password: {}'.format(username, password))