Apache 基本身份验证似乎禁用了其他模块

Apache 基本身份验证似乎禁用了其他模块

我有一个 Apache 2.2(位于负载平衡器后面),带有一个通过 LoadModule 指令加载的附加第三方模块(OpenAM Web 代理)。此模块检查每个请求是否经过授权。整个设置正在运行,在第三方模块的日志中,我可以看到对在 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

尽管我无法确切地说出第三方模块以及它是如何加入授权流程的,但我敢打赌原因是Satisfy Any

当一种授权方法匹配时,它允许跳过其余的授权步骤 - 这听起来就像您所看到的。

相关内容