GAE(Python)でベーシック認証したくなったが、ググってもあまり見つからず、参考サイトのコードもなぜかうまく動かず・・改造して動いたけどこんな感じでいいかな・・。
#!/usr/bin/env python
# coding:utf-8
#
# main.py
#
import webapp2
import time
from base64 import b64decode
# Basic認証ユーザ名:パスワード
basicPasswd = {
'username':'password',
}
class MainHandler(webapp2.RequestHandler):
def get(self):
# Basic認証
if self.__basicAuth():
self.response.write('Hello world!')
def __basicAuth(self):
# ヘッダ確認
# Authorization: Basic base64(ユーザ名:パスワード)
auth_header = self.request.headers.get('Authorization')
if auth_header:
basic, encoded = auth_header.split(' ')
uname, passwd = b64decode( encoded ).split(':')
# ユーザー名パスワード照合
if basic=='Basic' and uname in basicPasswd and passwd==basicPasswd[uname]:
# 認証成功
return True
# 認証エラー(不正な認証リクエスト受信)
time.sleep(1)
# クライアントに認証を要求
code = 401
self.response.set_status(code)
self.response.headers['WWW-Authenticate'] = 'Basic realm="SECRET AREA"'
self.response.write( self.response.http_status_message(code) )
return False
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
参考サイト ≫ Google App Engine でBasic認証を実装