Digest認証とリバースプロキシ

リバースプロキシで設定した先がDigest認証をしているとうまく動かないという問題に遭遇しました。Digest認証をWikipediaで調べてみると、下記のような手順でハッシュを生成しています。

A1 = ユーザ名 ":" realm ":" パスワード
A2 = HTTPのメソッド ":" コンテンツの<a class="mw-redirect" title="URI" href="https://ja.wikipedia.org/wiki/URI" data-mce-href="https://ja.wikipedia.org/wiki/URI">URI</a>
response = MD5( MD5(A1) ":" nonce ":" nc ":" cnonce ":" qop ":" MD5(A2) )

wikipediaより引用しました。ハッシュを生成する時にコンテンツのURIが含まれています。そのため元のURIとリバースプロキシした先のURIが変化しているとハッシュの不一致が発生してしまいます。

↓これは大丈夫
http://FRONT/aaa/bbb → http://BACKEND/aaa/bbb

↓これはダメ
http://FRONT/aaa/bbb → http://BACKEND/aaa/ccc

結局リバースプロキシで送り先がDigest認証がかかっている場合はURIに注意すれば問題なく使えるようです。

コメントを残す