我有基于Kerberos的身份validation,我想只禁用它的根URL: http://mysite.com/ : http://mysite.com/ 。 而且我希望它可以继续在http://mysite.com/page1类的任何其他页面上正常工作。
我在.htaccess中有这样的事情:
AuthType Kerberos AuthName "Domain login" KrbAuthRealms DOMAIN.COM KrbMethodK5Passwd on Krb5KeyTab /etc/httpd/httpd.keytab require valid-user
我只想closures根URL。 作为解决方法,可以在虚拟主机configuration中使用.htaccessclosures。 不幸的是我不知道该怎么做。
我的一部分vhost.conf:
<Directory /home/user/www/current/public/> Options -MultiViews +FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
UPD。 我正在使用Apache / 2.2.3(Linux / SUSE)
我试图使用这样的.htaccess版本:
SetEnvIf Request_URI ^/$ rootdir=1 Allow from env=rootdir Satisfy Any AuthType Kerberos AuthName "Domain login" KrbAuthRealms DOMAIN.COM KrbMethodK5Passwd on Krb5KeyTab /etc/httpd/httpd.keytab require valid-user
不幸的是,这样的configuration会为所有URL转换Kerberos AuthType。 我试着放第3行
SetEnvIf Request_URI ^/$ rootdir=1 Allow from env=rootdir Satisfy Any
主阻拦后,但它并没有帮助我。
我将mod_auth_kerbconfiguration移到了vhost.conf。 并使用Location指令closures某些URL的授权。
# root_url <LocationMatch "(^\/$|^$)"> Satisfy Any </LocationMatch> <Location /incidents/last> Satisfy Any </Location> <Directory /home/user/www/> Options -MultiViews +FollowSymLinks AllowOverride None Order allow,deny Allow from all AuthType Kerberos AuthName "Domain login" KrbAuthRealms DOMAIN.COM KrbMethodK5Passwd On Krb5KeyTab /etc/httpd/httpd.keytab require valid-user </Directory>
这解决了我的问题。
你如何做这将取决于你是否使用Apache 2.2或Apache 2.4。 我没有真正testing这些,所以完全有可能根本不起作用,或者可能需要一些调整。
对于2.2,我们可以使用SetEnvIf来设置一个variables,如果他们请求/和使用Allow from Satisfy any来控制访问。 所有现有的configuration应该保持原样:
SetEnvIf Request_URI ^/$ rootdir=1 Allow from env=rootdir Satisfy Any
随着2.4 authentication和授权的变化。 我们现在有一组<Require>块,您可以环绕任何访问控制来微调授权:
SetEnvIf Request_URI ^/$ rootdir=1 <RequireAny> AuthType Kerberos AuthName "Domain login" KrbAuthRealms DOMAIN.COM KrbMethodK5Passwd on Krb5KeyTab /etc/httpd/httpd.keytab Require valid-user Require env rootdir=1 </RequireAny>
<RequireAny>块意味着Require指令中的任何一个都必须匹配以使授权成功。 还有<RequireAll>和<RequireNone>块。
尝试AllowOverride None它将禁用.htacess