3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

flask_httpauthのDigest認証がうまくいかない

Last updated at Posted at 2021-11-15

WebAPIのテストサーバとしてFlaskをたてた

たてた。
ついでにDigest認証の機能も付けてみた

うまくいかない

作られているハッシュ値はあっているはずなのに401で返ってくる

クライアント側で接続を切る実装になっていた

通常(?)は

  1. 初回の問い合わせ
  2. 401で返ってくるのでその応答を使ってハッシュ値を作る
  3. 再問合せ

だが、初回の問い合わせと再問合せの間に接続がきられていた。

flask_httpauthはnonceとopaque値をセッション基準で保存していて
再問合せがあった場合に、初回問い合わせと一致しているかどうか
確認しているようだ。

一方で、この確認そのものや、nonce、opaque値の生成は外部からコントロールできる。

追加コード

下記コードを追加した。
この例ではnonce値は固定の値を返すようにした。
nonceとopaqueの比較は常にOKが返るようにしている。
ハッシュ値の計算と比較は通常通り実行されるので、一応これでも問題ない。とおもう


tmp_nonce = ""
@auth.generate_nonce
def gen_nonce():
	tmp_nonce = "aaaaaaaaaaaa5004497ae5a9600b4b53"
	return tmp_nonce

@auth.verify_nonce
def ver_nonce(nonce):
	return True

@auth.verify_opaque
def ver_opaque(opaque):
	return True

自分で理解してからだとよくわかるんだけど、しっかりドキュメントに書いてあるね。
無効化ではなく、各々のサーバに適した管理をしてくれ・・・と書いてある

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?