こんにちは。CTOの馬場です。
今回もインフラエンジニア向けにちょっとした情報を紹介します。
今回は一部で話題になっていた「Proxy越しのDigest認証」について、 ちょっとしたコツがあるのでノウハウを公開します。
前提として、
- Digest認証は、認証情報の中にURIを保持しています
- Digest認証では、
mod_auth
で 「リクエストされたURI」 と 「認証情報の中のURI」 の整合を確認しています
と、いうことです。
なので、backendサーバで mod_auth
が認証処理をする時に、
「リクエストされたURI」 と 「認証情報の中のURI」 が一致している必要があります。
大抵の場合、次の図の構成になっていると思いますが、
これを、次の図のように変えることで両立させることができるようになります。
ポイントは、RewriteするときにPT(PassThrough)を指定することです。
このフラグ指定により、 mod_proxy
通過後に mod_auth
に渡されるリクエストURIが、
元(=backendが受け取ったそのもの)のままになります。
RewriteRule ^/proxied/(.*)$ /origin/$1 [PT]
別解として、proxyで認証情報をいじる方法(できればそのほうが設定が楽)もありそうですが、 まずは1つの方法として公開しておきます。