Flaskを使ってページ単位でBasic認証を設定する際のパスワードリストが前回生のパスワードを直接ファイルに記述していましたが、これをハッシュで記載するように修正します。
python3 の仮想環境作成
今回のPCはOSをインストールし直した環境です。ですので、仮想環境を用意するところから始めます。といっても、説明は省略します。ついでに、今回使うライブラリ(werkzeug)までインストールしてしまいます。
~$ mkdir python ~$ cd python/ ~/python$ sudo apt-get install python3-venv ~/python$ python3 -m venv pytest ~/python$ cd pytest/ ~/python/pytest$ source ./bin/activate (pytest) ~/python/pytest$ python -V Python 3.6.9 (pytest) ~/python/pytest$ pip install --upgrade pip (pytest) ~/python/pytest$ pip install werkzeug
Werkzeugでハッシュ値を計算する
今回使用するライブラリは werkzeug というものです。wUSGI をインストールすると一緒に入るようですが、手元のPCには wUSGI は入っていないので、インストールする必要がありました。
で、対話的にハッシュ値を計算して、検算してみます。
(pytest) ~/python/pytest$ python3 Python 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from werkzeug.security import generate_password_hash, check_password_hash >>> generate_password_hash("GoodPassword") 'pbkdf2:sha256:150000$1AVzDmpB$2687453800736d0569477851b960ea158dc16949a3b3d9c317c8d212fbac4400' >>> check_password_hash('pbkdf2:sha256:150000$1AVzDmpB$2687453800736d0569477851b960ea158dc16949a3b3d9c317c8d212fbac4400',"GoodPassword") True >>> check_password_hash('pbkdf2:sha256:150000$1AVzDmpB$2687453800736d0569477851b960ea158dc16949a3b3d9c317c8d212fbac4400',"BadPassword") False >>>
このハッシュ値をパスワードリストに貼っておけばOKです。