SPNEGO用Java提示密码多次
我正在使用spnego http://spnego.sourceforge.net在我的系统上进行单点登录,问题是还要输入正确的密码,它会一次又一次地提示。
有时,如果您键入两次,则可以加入系统,有时您需要输入相同用户和密码的10倍以上才能访问系统。
登录系统后,可以在随机时间,一次又一次地多次提示密码。
提前致谢
我还没有尝试过那个特定的spnego模块,但之前我遇到过这个问题。
SPNEGO的问题和两个登录提示通常与以下内容有关:
-
应用程序的登录服务配置为允许协商和基本:
WWW-Authenticate: Negotiate WWW-Authenticate: basic
-
如果在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文件)
修复密钥表后,系统再也不会要求输入密码了。
谢谢大家!