LoadModuleディレクティブを介してロードされる追加のサードパーティモジュール(OpenAM Webエージェント)を備えたApache 2.2(ロードバランサーの背後)があります。このモジュールは、すべてのリクエストが許可されているかどうかをチェックします。セットアップ全体が機能しており、サードパーティモジュールのログで、Apacheのアクセスログにある各リクエストに対してチェックが適切に行われていることがわかります。
次のディレクティブをApache構成のVirtualHost部分に配置して基本認証をアクティブ化すると、状況が変わります。
<Directory /path/to/docroot>
Options -MultiViews
AllowOverride All
Order deny,allow
Deny from all
Allow from 10.0.0.0/8
Allow from <other ips>
AuthType Basic
AuthBasicProvider file
AuthName "AuthZone"
AuthUserFile /path/to/htpasswd
Require valid-user
Satisfy Any
</Directory>
これで、基本認証は機能しますが、サードパーティモジュールによるチェックは機能しません。基本認証処理の対象となったすべての要求がサードパーティモジュールに到達しなかったようです。後者のログでは、「許可」に一致する要求のみが表示されるため、基本認証処理に合格しませんでした。
アクセスログにすべてのリクエストが表示され、Apacheが「欠落している」リクエストに対してコード200で応答していることがわかります。
これの理由は何でしょうか?エラーログには有用な情報は含まれていません。
サードパーティのモジュールとそれが認証フローにどのように接続されているかについては実際には言えませんが、原因はSatisfy Any
であると賭けます。
これにより、承認の1つの方法が一致したときに、残りの承認手順をスキップできます。これは、表示されているように聞こえます。