我的最终目标是只应用尝试Kerberos身份validation在PHP页面上。 我正在尝试使用FileMatches指令
我有我的Apacheconfiguration…
.. alias /krb /var/www/krb <Directory /var/www/krb> <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^ /krb/index.php [L] </IfModule> php_flag display_errors on <FilesMatch ".*\.php$"> #start-of-trouble AuthType Kerberos AuthName "Kerberos authenticated" Krb5KeyTab "valid.keytab" KrbAuthRealms DOMAIN KrbServiceName HTTP/my.host.name KrbMethodNegotiate On KrbMethodK5Passwd On require valid-user #end-of-trouble Header set "X-TEST-FILE" "filesmatch *.php" </FilesMatch> </Directory> ..
如果我访问http://my.host.name/krb/test ,一切都很好,并validation用户variables填充( PHP_AUTH_USER和REMOTE_USER )。 如果我访问http://my.host.name/krb/ ,我应该得到相同的页面,但相反,我得到一个401未经授权的。 我正在使用fiddler进行debugging,并且我看到/ krb /的请求不包括WWW-Authenticate: Negotiate因为成功/ krb / test请求会执行此操作。
我注释了我#start-of-trouble #end-of-trouble之间的所有事情,并且可以通过查看附加到响应的X-TEST-FILE来validationFilesMatch是否应用于这两个请求。