その他
    ホーム 技術発信 DoRuby IEでダイジェスト認証をかけるとエラーになった。

    IEでダイジェスト認証をかけるとエラーになった。

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    こんにちはひさしぶりに書きます。

    今日は新人プログラマーカツオがはまったdigest認証にまつわるIEのエラーについて書きます。

     自分が担当しているプロジェクトで管理画面に

    DIGEST認証をかけることになりました。

    ということで頑張って書けたんですけど

    FIREFOXだと普通にDigest認証がかかっているのに

    どうゆうわけかIEだと認証がかからないわけです。

    400 Bad Requestがでました。

    ログをみたらこんな感じ

    Tue Apr 15 11:19:59 2008] [error] [client xxx.xxx.xxx.xxx] Digest: uri mismatch 
    - </admin/tour> does not match request-uri </admin/tour?page=1>  

     何やら調べてみたら

     IE6以前のバージョンでdigest認証を利用するとAuthorizationヘッダの,uri に ?以降のパラメータが含まれずHTTP400のエラーがでてるみたいです。

    IEのバグだそうです。IE7では改善されているようですが。

    そんなわけで

     <Location /admin>    AuthType Digest 
        AuthName "Enter ID and Password"
        AuthDigestProvider file
        AuthUserFile conf/xxx/.htdadmin
        require valid-user
        BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
      </Location> 

    と赤字で書いたところをダイジェスト認証に書いてあげれば

    強制的に回避してくれるみたいですよ。

    ちょっと自分のメモ書きみたいになってしまいましたが

    文章苦手なので許してくださいませ。

    ではではまた。