我正在java应用服务器上安装spnego,该服务器将针对Active Directory对用户进行身份验证。我已仔细按照所有说明操作,AD Preauth帐户在servicePrincipalName属性中包含java app服务器FQDN。我们已经安装了另一个安装了spnego的java应用服务器,它可以正常工作(我没有安装它们,它们不再在这里)。
我开发了一个简单的java EE 6 Web应用程序来测试spnego是否正常工作(带有request.getRemoteUser()的jsp页面)。当我在现有服务器上运行此应用程序时,我正确地获得了用户名响应。当我在新服务器上运行它我设置时,我收到以下错误:
java.lang.UnsupportedOperationException: NTLM specified. Downgraded to Basic Auth (and/or SSL) but downgrade not supported.
使用Fiddler检查会话,授权:对正确工作的服务器的协商令牌请求是一个巨大的字符串(我相信Kerberos令牌?)。授权:对非工作服务器的协商令牌请求只有56个字符(所以,NTLM令牌?)。当服务器收到该NTLM令牌时,我相信在发生错误时会发生错误。
我已经检查过早期谈判会议的回复,但无法找到服务器要求Kerberos与NTLM令牌的位置。浏览器如何确定发送什么?
其他详细信息:Java App Server计算机:Windows 2008 R2,Java 1.7,Glassfish 3.1.2.2
客户端计算机:Windows 7企业版,标准企业Windows域上的IE8
感谢。
答案 0 :(得分:0)
HTTP/MYSERVER.MYDOMAIN.COM
。klist get HTTP/MYSERVER.MYDOMAIN.COM
,并验证您是否获得了票证。我的猜测是这会失败。假设第三点失败,那么您的客户端操作系统或KDC上的Kerberos配置(不是您的浏览器/网络服务器)存在更大的问题。