Java 使用NTLMv2的集成Windows身份验证

Java 使用NTLMv2的集成Windows身份验证,java,tomcat,windows-authentication,ntlm,Java,Tomcat,Windows Authentication,Ntlm,我正在尝试实现NTLMv2类型身份验证,但在使其工作时遇到问题 我已将客户端配置为使用服务器的主机名和我所在的域发送Type-1GET请求。 服务器以401 Unauthorized质询和WWW Authorize:NTLM响应。base64包含以下内容: byte[] msg = {(byte) 'N', (byte) 'T', (byte) 'L', (byte) 'M', (byte) 'S', (byte) 'S', (byte) 'P', (byte) '\0', 0x

我正在尝试实现NTLMv2类型身份验证,但在使其工作时遇到问题

我已将客户端配置为使用服务器的
主机名和我所在的
域发送
Type-1
GET请求。 服务器以
401 Unauthorized
质询和
WWW Authorize:NTLM
响应。base64包含以下内容:

byte[] msg = {(byte) 'N', (byte) 'T', (byte) 'L', (byte) 'M', (byte) 'S', (byte) 'S', (byte) 'P', (byte) '\0',
        0x02, 0, 0, 0, 0, 0, 0, 0, /*msg*/0x28, 0/*length*/, 0, 0, 0x01, (byte) 0b10000010, 0, 0,
        1, 2, 3, 4, 5, 6, 7, 8, //nonce
        0, 0, 0, 0, 0, 0, 0, 0}
在那之后,我希望Internet Explorer自动发送
Type-3
响应,该响应将包含用户名和使用密码散列的加密质询,但它什么也不做

我已在
本地Intranet
设置下设置了本地IP,并已将自定义级别更改为使用当前用户名和密码自动登录

在收到来自服务器的质询响应后,我是否应该手动执行某些操作?我需要浏览器进行加密,因为我无法访问当前用户的凭据


服务器端组件是一个自定义的
Java应用程序
,运行在
tomcat8.0.45
上。虽然我认为这不应该有关联,但我还是要加上这个以防万一。还请注意,服务器有时也可能在代理之后(通常以
apachehttpd
的形式)。如果您使用IE,您不需要知道它是如何工作的,但下面有详细信息

如果IE没有响应,则可能存在区域冲突。如果IP应用于多个区域,事情就会变得混乱。我将验证您是否将站点添加到受信任的站点,并确保为该区域设置了自动设置

Eric Glass的代码和解释让我很幸运。
apendix中的Java可以工作,我很幸运地将其转换为c#,几乎不需要做任何更改

如果您正在使用IE,您不需要知道它在引擎盖下是如何工作的,但下面有详细信息

如果IE没有响应,则可能存在区域冲突。如果IP应用于多个区域,事情就会变得混乱。我将验证您是否将站点添加到受信任的站点,并确保为该区域设置了自动设置

Eric Glass的代码和解释让我很幸运。
apendix中的Java可以工作,我很幸运地将其转换为c#,几乎不需要做任何更改

您使用的是什么web应用程序平台?阿帕奇?雄猫?JBOSS?请将标签添加到问题中。@JohnRSmith添加了额外的信息。我认为这应该是无关的,但以防万一。你从哪里得到了Tomcat的NTLMv2模块?发布链接,我将尝试重新编程。@T-Heron没有模块。Tomcat响应您在问题中看到的字节数组。这只是一个servlet调用,您使用的是什么web应用程序平台?阿帕奇?雄猫?JBOSS?请将标签添加到问题中。@JohnRSmith添加了额外的信息。我认为这应该是无关的,但以防万一。你从哪里得到了Tomcat的NTLMv2模块?发布链接,我将尝试重新编程。@T-Heron没有模块。Tomcat响应您在问题中看到的字节数组。这只是一个servlet callI,我仍然很困惑。我已经实现了Type-1和Type-2消息的逻辑,但我被期望IE自动执行Type-3消息。这就是它的工作原理吗?我还是很困惑。我已经实现了Type-1和Type-2消息的逻辑,但我被期望IE自动执行Type-3消息。这就是它的工作原理吗?