web-dev-qa-db-ja.com

Apache基本認証は他のモジュールを無効にしているようです

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で応答していることがわかります。

これの理由は何でしょうか?エラーログには有用な情報は含まれていません。

1
bfb

サードパーティのモジュールとそれが認証フローにどのように接続されているかについては実際には言えませんが、原因はSatisfy Anyであると賭けます。

これにより、承認の1つの方法が一致したときに、残りの承認手順をスキップできます。これは、表示されているように聞こえます。

1
Shane Madden