SPNEGO用Java提示密码多次

我正在使用spnego http://spnego.sourceforge.net在我的系统上进行单点登录,问题是还要输入正确的密码,它会一次又一次地提示。

有时,如果您键入两次,则可以加入系统,有时您需要输入相同用户和密码的10倍以上才能访问系统。

登录系统后,可以在随机时间,一次又一次地多次提示密码。

提前致谢

我还没有尝试过那个特定的spnego模块,但之前我遇到过这个问题。

SPNEGO的问题和两个登录提示通常与以下内容有关:

  1. 应用程序的登录服务配置为允许协商和基本:

    WWW-Authenticate: Negotiate WWW-Authenticate: basic 
  2. 如果在Internet Explorer中启用了Windows本机身份validation,但Windows客户端无法检索该服务的Kerberos票证(由于某种原因),IE将

    • 提示登录,但无论你在这里写什么,它都会使用Authorization:Negotiate发送一个NTMLSSP令牌

    • 使用NTMLSSP令牌进行身份validation将失败,您将获得一个辅助登录提示,该提示将使用基本授权提交:Basic

不知道为什么validation为什么有时会让你进入两次以上…

要进一步调查此问题:

  • 检查服务器日志文件(设置java选项-Dsun.security.krb5.debug = true和web.xml spnego.logger.level = 1)以获取线索。
  • 检查Windows客户端是否已登录到域。
  • 检查Internet Explorer中是否启用了Windows本地身份validation。
  • 检查网站是否已添加到Internet Explorer中的本地Intranet站点(或在网站名称中不使用点“。”)。
  • 检查是否为您的应用服务器配置了keytab,krb5.conf和login.conf。 (参见spnego docs pre_flight和reference_docs)
  • 检查密钥表中使用的主体名称是DNS A记录,而不是服务的DNS CNAME记录。
  • Fiddler2是调试网络流量的绝佳工具。 安装并查看Internet Explorer响应身份validation质询的内容(HTTP 401)。
  • 如果Internet Explorer indeeds提交NTMLSSP令牌,您可能还需要使用Wireshark并过滤“Kerberos”流量,以查看您的域控制器是否响应包含用于访问您的服务的Kerberos票证的TGS-REP。

如果你仍然运气不好,如果你可以提供全部或部分,我们可能会帮助你

  • spnego配置
  • 服务器日志(如果有相关内容)
  • Fiddler2追踪
  • Wireshark跟踪

岛之风

我发现了问题。

凭据有效但它来自另一个域(我更改了域但未更新keytab文件)

修复密钥表后,系统再也不会要求输入密码了。

谢谢大家!