我有一個使用LDAP授權的Apache 2.2,它的工作方式非常出色,並且使得我可以在本地訪問時繞過認證。Apache 2.2允許來自env = _variable_
Allow from
localIPhostnameAhostnameB等..
如果我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 /calendar/export>
Satisfy Any
Allow from all
AuthType None
SetEnv WTF 123
</Location>
同樣,我可以看到我的新的環境變量(WTF
)出現在該URL(當我甩在腳本中的服務器ENVS),所以我知道SetEnv
和SetEnvIf
指令都在工作。
有什麼我失蹤(任何Apache2.2的怪癖?),因爲迄今爲止我見過的所有解決方案都不起作用。就好像我的Allow from
更改在重新啓動Apache後沒有任何效果。我開始感覺到我的理智滑倒。
在編寫Satisfy Any
,Order allow, deny
和Auth*
指令的指令時是否還有特定的順序,這可能會影響到這一點?