0

我可以配置 Mod_auth_kerb ( http://modauthkerb.sourceforge.net/configure.html ) 以执行可选的 Kerberos 协商:

  1. 如果浏览器配置为协商 Mod_auth_kerb 将执行协商并验证用户(并发送REMOTE_USER

  2. 如果浏览器未配置为协商 Mod_auth_kerb 将不执行身份验证,并将发送没有REMOTE_USER. 稍后,应用程序将对请求进行身份验证。重要的是 Mod_auth_kerb 不应返回 401 NEGOTIATE。

4

1 回答 1

2

我的猜测是,您要解决的真正问题是 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 的代码,根本无法做您想做的事情。

于 2014-03-23T21:27:19.197 回答