我有一個供應商Apache模塊(PingFederate),它根據它接收到的令牌設置環境變量。我想根據環境變量的值控制對目錄的訪問。基於環境變量值的Apache ACL
例如模塊將變量是這樣的: [PF_AUTH_SUBJECT] =>亞倫 [PF_AUTH_GROUPS] => CN = Application.E18.Users,OU =內部,DC =本地,CN = Application.E17.Users, OU =內部,DC =本地
我想保護一個目錄,以便只有組CN = Application.E18 ...中的用戶才能訪問它。我的位置方向conf看起來像這樣:
<Location /example_app>
SetEnvIf %{PF_AUTH_GROUPS} ^.*CN=Application.E18.Users.*$ ALLOWED
AuthName "ACL PingFederate restricted"
AuthType PFApacheAgent
Order Deny,Allow
Deny from all
Allow from all
</Location>
這似乎不起作用。我已經試過:
SetEnvIf %{PF_AUTH_GROUPS} ^.*CN=Application.E18.Users.*$ ALLOWED
SetEnvIf %{PF_AUTH_GROUPS} ^.*Application.*$ ALLOWED
SetEnvIf %{PF_AUTH_GROUPS} ^.*A.*$ ALLOWED
的作品的唯一事情是:
SetEnvIf %{PF_AUTH_GROUPS} ^.*$ ALLOWED
這顯然是行不通的。
https://issues.apache.org/bugzilla/show_bug.cgi?id=25725有些人知道,SetEnvIf不會測試環境變量,但http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html的文檔提到「這是一個與請求相關的列表中的環境變量」,這應該是。
我用這個也試過了mod_rewrite:
RewriteEngine On
<Location /example_app>
RewriteCond %{PF_AUTH_GROUPS} ^.*Application.E18.Users.*$
RewriteRule - [E=ALLOWED:1]
AuthName "ACL PingFederate restricted"
AuthType PFApacheAgent
Order Deny,Allow
Deny from all
Allow from all
</Location>
在所有這些情況允許的環境變量沒有設置的。