2019年9月6日金曜日

ラズパイ(Webサーバー・8)

前回は、Python で設定ファイルの読み書きが簡単にできる
方法を行いました。
今回は、誰からでも設定を変更されないように、
認証機能をつけてみます。
まず仕様としては、機器の設定にローカルネットワークからの
接続のみを想定してますので、比較的に単純なBASIC認証を
設定してみます。

そこで、これまで server_class クラスのハンドラに認証機能を追加します。
PAGE_KEY = 'Onxxxxxxx=='

class MyHandler(s.BaseHTTPRequestHandler):
    def do_AUTHHEAD(self):
        self.send_response(401)
        self.send_header("WWW-Authenticate", "Basic realm=\"Please enter your user information\"")
        self.send_header("Content-type", "text/html")
        self.end_headers()
        return
        
    def do_GET(self):
        global PAGE_KEY
        chk_pass = False
        if (self.headers.get("Authorization") == None):
            self.do_AUTHHEAD()
            self.wfile.write('no auth user received'.encode("utf-8"))
            pass
        
        elif self.headers.get("Authorization") == "Basic " + PAGE_KEY:
            chk_pass = True
        
        else:
            self.do_AUTHHEAD()
            self.wfile.write((self.headers.get("Authorization")).encode("utf-8"))
            self.wfile.write('not authenticated'.encode("utf-8"))
            pass

パスワードを入力しないとページが表示されないようにすることができます。




次回は、パスワードの生成を考えてみます。
https://www.filetalk.info/index.html

0 件のコメント:

コメントを投稿