我有一个使用 LDAP 授权设置的 Apache 2.2,它按预期工作得非常好,并且也做到了,这样我就可以在本地访问它时绕过身份验证。
Allow from
localIP 主机名A 主机 名B等...
如果我curl
来自服务器,则不需要任何身份验证。所以一切都很好,并且按预期工作。
我现在需要的是创建一个特定的 URL 来绕过授权。
我已经尝试了所有使用的常用解决方案SetEnvIf
;
SetEnvIf Request_URI "^/calendar/export" bypassauth=true`
Allow from env=bypassauth IP_ADDRESS HOSTNAME_A HOSTNAME_B
但这只是行不通!
- 本地访问仍然不受限制,但远程不受限制(那里没有变化)
- 如果我在该 URL 的脚本上转储我的服务器环境变量,我可以看到我的
bypassauth
变量正在被传递。
我终生无法弄清楚为什么该Allow from env=bypassauth
部分不工作,而它仍然遵守附加的指令参数。
我还尝试了另一个建议,使用 Location 指令;
<Location /calendar/export>
Satisfy Any
Allow from all
AuthType None
SetEnv WTF 123
</Location>
同样,我可以看到我的新环境变量 ( WTF
) 出现在这个 URL 上(当我在脚本中转储服务器环境时),所以我知道SetEnv
andSetEnvIf
指令正在工作。
我有什么遗漏(任何 Apache2.2 怪癖吗?),因为到目前为止我看到的所有解决方案都不起作用。就好像我的Allow from
更改在重新启动 Apache 后没有任何效果。我开始觉得我的理智在下滑。
在为 编写指令时是否还有特定的顺序Satisfy Any
,Order allow, deny
以及Auth*
可能会影响这一点的指令?