我怎样才能禁用我的网站的根Kerberos身份validation?

我有基于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