WebAPIのテストサーバとしてFlaskをたてた
たてた。
ついでにDigest認証の機能も付けてみた
うまくいかない
作られているハッシュ値はあっているはずなのに401で返ってくる
クライアント側で接続を切る実装になっていた
通常(?)は
- 初回の問い合わせ
- 401で返ってくるのでその応答を使ってハッシュ値を作る
- 再問合せ
だが、初回の問い合わせと再問合せの間に接続がきられていた。
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
後
自分で理解してからだとよくわかるんだけど、しっかりドキュメントに書いてあるね。
無効化ではなく、各々のサーバに適した管理をしてくれ・・・と書いてある