我的猜测是,您要解决的真正问题是 Internet Explorer 的损坏。对于所有其他浏览器,您可以像这样在 Apache 配置中简单地设置错误重定向。
<Location /login-spnego>
AuthType Kerberos
require valid-user
KrbMethodNegotiate on
KrbMethodK5Passwd off
Krb5Keytab /etc/httpd/conf/keytab
ErrorDocument 401 /login-simple
</Location>
但是,如果没有将 IE 配置为允许对相关站点进行 kerberos 身份验证并且从不显示 401 文档,则 IE 将陷入死循环。我发现解决此问题的唯一方法是使用基于HTTP_USER_AGENT
.
# IE fails hard if the user does not have a tgt for SPNEGO
# and either attempts NTLM or fails altogether depending on
# exact version. Redirect all IE login attempts to
# form rather than attempt pass-thru SPNEGO login.
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*MSIE
RewriteRule ^/login-spnego/ /login-simple/ [PT]
这并不能真正解决您的问题,但据我所知,如果不重新编写 mod_auth_kerb 的代码,根本无法做您想做的事情。