Mod_auth_kerb:可选的Kerberos协商

时间:2014-03-20 09:58:11

标签: apache authentication kerberos mod-auth-kerb

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

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

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

1 个答案:

答案 0 :(得分: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 auth到相关网站并且从不显示401文档,则进入死亡螺旋。我找到的唯一解决此问题的方法是使用基于HTTP_USER_AGENT的mod_rewrite规则。

# 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的代码。