java - SSO 身份验证,响应始终为 NTLM

标签 java kerberos spnego

我正在尝试在我们正在开发的 Intranet 应用程序上实现 SSO。我正在使用SPNEGO为了这。现在我在配置 SSO 时遇到了一些问题,希望这里有人能够帮助我。

设置是这样的:

  1. 带有 tomcat 的 Linux 服务器,为 Intranet 应用程序提供服务
  2. Windows Server 2008 作为域 Controller (Active Directory)
  3. 带有 IE9 和 Firefox 的 Windows 7 客户端

当我打开 Intranet 应用程序时,我看到一个 GET 请求从客户端发送到 tomcat 服务器。 tomcat服务器和SpnegoFilter的第一个响应是401未授权,这是正确的,因为客户端需要进行身份验证。

806 6.117724    192.168.65.50   192.168.65.50   HTTP    284 HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Negotiate\r\n

客户端的响应是带有标志 NTLMSSP_NEGOTIATE 的 GET 请求。在这里它破裂了。我不期望 NTLM 响应,而是 kerberos/spnego 响应。不知何故,我就是不知道如何向 tomcat 服务器发送正确的响应。

808 6.123277    192.168.65.50   192.168.65.50   HTTP    637 GET / HTTP/1.1 , NTLMSSP_NEGOTIATE

默认情况下,SPNEGO 不支持 NTLM,因此我在日志中收到以下条目:

java.lang.UnsupportedOperationException: NTLM specified. Downgraded to Basic Auth (and/or SSL) but downgrade not supported.

所以我做错了什么,但经过一天的配置和策略摆弄后,我只是不明白它是什么。

希望得到一些回应。

最佳答案

Kerberos 不适用于 IP,请使用完全限定的域名。

关于java - SSO 身份验证,响应始终为 NTLM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936243/

相关文章:

java - 在Java中的多个面板上画线

java - 如何制作.class的 map ?

java - 给定特定枚举类型的数值,如何检索名称?

java - Apache Http Client 4.5.2 Kerberos 身份验证耗时过长

tomcat - 部署 CAS 后 spnego 身份验证停止工作

Java构造函数解释好吗?

Java Kerberos 票证更新 TGT

用于安全 Hbase 的 Java 客户端

c++ - 用于 NTLM 身份验证的 GSSAPI

c++ - 无法获得协商身份验证以在 libcurl 程序中工作