Apache 2.2.14 (Debian testing) と IE(Vista/7)間で Digest認証がいつの間にやら、失敗するようになっていた。(ただし、FirefoxはOK)
調べてみたところ、digest認証要求の WWW-Authenticate: の中身が、
WWW-Authenticate: Digest realm="realm_name", nonce="aS6hWjx7AAA=7dee8171dfa4357404f363e75c75126158320985", algorithm=MD5, qop="auth", Digest realm="realm_name", nonce="aS6hWjx7AAA=7dee8171dfa4357404f363e75c75126158320985", algorithm=MD5, qop="auth"
のように、Digest realm="... 以降の部分が、2回繰り返していることに起因するらしい。(RFC的にも問題?)
(この場合、IE(Vista/7) では、認証ダイアログが出るにもかかわらず、次の GETリクエストに Authorization:ヘッダがない)
mod_auth_digest.c を眺めてみると、line 1302 の note_digest_auth_failure() 内で、
apr_table_mergen(..."WWW-Authenticate",..."Digest realm...
という、同一のヘッダが存在する場合は、値部分をマージする関数が使われていたので、
apr_table_setn(..."WWW-Authenticate",..."Digest realm...
という、マージではなく置換する関数に変更したところ、無事、Vista/7 でも正常に動作することを確認。
ただし、そもそも2回呼ばれていること自体が問題なので、本来であれば呼び元を探求すべきだが、VIA Eden ではビルドに時間が掛かりすぎるため、とりあえず断念。
Categories
Android |
CeSleep |
comp_misc |
comp_tips |
fastcopy |
ipmsg |
mailman |
misc |
npop |
ScheEdit |
sigsleep |
tdiary |
thinkpad