我有基于 Kerberos 的身份验证,我只想在根 url: 上禁用它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
我只想为根 URL 关闭它。.htaccess
作为解决方法,可以在虚拟主机配置中关闭使用。不幸的是我不知道该怎么做。
我的 vhost.conf 的一部分:
<Directory /home/user/www/current/public/>
Options -MultiViews +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
更新。我正在使用 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
不幸的是,这样的配置为所有 URL 转换了 Kerberos AuthType。我试图放置前 3 行
SetEnvIf Request_URI ^/$ rootdir=1
Allow from env=rootdir
Satisfy Any
在主要街区之后,但这对我没有帮助。
我将
mod_auth_kerb
配置移动到 vhost.conf。并使用Location
指令关闭某些 URL 的授权。那解决了我的问题。
如何执行此操作取决于您使用的是 Apache 2.2 还是 Apache 2.4。我还没有实际测试过这些,所以它完全有可能根本不起作用或者可能需要一些调整。
对于 2.2 ,如果他们正在请求和使用并控制访问,我们可以使用它
SetEnvIf
来设置变量。您现有的所有配置都应保持原样:/
Allow from
Satisfy any
在 2.4 中,身份验证和授权发生了变化。我们现在有一组
<Require>
块,您可以围绕任何访问控制来微调授权:该
<RequireAny>
块意味着任何一个指令Require
必须匹配授权才能成功。还有<RequireAll>
和<RequireNone>
块。尝试 AllowOverride None 它将禁用 .htacess