2

我有一个有效的 Kerberos SSO 设置,我将 apache 和 jboss 与 mod_jk 一起使用。Apache 使用以下配置(通过 kerberos)保护 auto-login.htm 页面:

<Location /auto-login.htm>  
AuthType           Kerberos  
AuthName           "Kerberos Active Directory Login"  
KrbMethodNegotiate on  
KrbMethodK5Passwd  on  
KrbAuthRealms      KRB.SOMEDOMAIN.COM  
KrbServiceName     HTTP/server.somedomain.com@KRB.SOMEDOMAIN.COM  
Krb5Keytab         /etc/krb/krb5.keytab  
KrbVerifyKDC       on  
KrbAuthoritative   on  
require            valid-user  
#ErrorDocument 401  /login.htm  
</Location>

这 100% 有效,我可以使用 Kerberos/SSO 登录并在我的 java 应用程序中读取 remote_user 变量。

现在的问题是,如果用户无法通过 Kerberos/SSO 登录,我想重定向到未受保护的 login.htm。我想到的解决方案是设置 401 ErrorDocument,但是当我通过在上面的代码中取消注释 #ErrorDocument 401 来设置它时,它总是重定向到 login.htm,因为返回 401 来请求用户凭据本质上是 Kerberos 的一部分/SSO 身份验证过程。因此结果是用户总是以 login.htm 结尾,并且永远不会完成 Kerberos/SSO 登录过程。

任何帮助或替代解决方案将不胜感激。

在此先感谢
皮埃尔

4

2 回答 2

5

为了不中断 Kerberos/SSO 身份验证过程,请使用以下命令:

ErrorDocument 401 "<html><meta http-equiv=\"refresh\" content=\"0;url=/login.htm\"></html>"

这将导致仅当用户在浏览器对话框上单击取消时才会发生重定向。

于 2010-01-11T12:20:13.097 回答
0

对于任何中间步骤,将上述内容绑定到 HTTP 流中,例如 Servlet,但返回的认证成功除外。

于 2010-02-03T04:11:34.723 回答