BASIC認証のWSGIミドルウェア
Python Unconference Tokyo 1 の説明を聞いて、ミドルウェアがなんとなく分かって、何か一つ書きたくなったので書いてみた.
def application(environ, start_response): start_response('200 OK', [('Content-type','text/plain')]) return ['OK'] def basic_auth(application, realm, login_id, password): __application = application __login_id = login_id __password = password __realm = realm def handler(environ, start_response): try: if 'HTTP_AUTHORIZATION' in environ: s = environ['HTTP_AUTHORIZATION'].split(' ') if s[0] == 'Basic': import base64 t = base64.b64decode(s[1]).split(':') if (t[0] == __login_id) and (t[1] == __password): return __application(environ, start_response) except: pass start_response('401 Unauthorized', [('WWW-Authenticate', 'Basic realm=%s' % __realm)]) return ['401 Unauthorized'] return handler from wsgiref.simple_server import make_server make_server('', 8000, basic_auth(application, 'restricted', 'hoge', 'orz')).serve_forever()