【问题标题】:Integrated Windows Authentication using NTLMv2使用 NTLMv2 的集成 Windows 身份验证
【发布时间】:2017-11-16 12:49:35
【问题描述】:

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

我已将客户端配置为使用服务器的hostname 和我所在的domain 发送Type-1 GET 请求。 服务器响应401 Unauthorized 质询以及WWW-Authorize: NTLM <base64-msg>。 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 响应,其中将包含用户名和使用密码哈希的加密质询,但它什么也不做。

我已在 Local Intranet 设置下设置了我的本地 IP,并将自定义级别更改为使用 Automatic logon with current username and password

我应该在收到服务器的质询响应后手动做一些事情吗?我需要浏览器进行加密,因为我无权访问当前用户的凭据。

服务器端组件是在Tomcat 8.0.45 上运行的自定义Java application。尽管我认为它不应该相关,但我会添加它以防万一。另请注意,服务器有时也可能位于代理后面(通常以Apache HTTPD 的形式)。

【问题讨论】:

  • 您使用的是什么网络应用平台?阿帕奇?雄猫?老板娘?也请在问题中添加标签。
  • @JohnRSmith 添加了额外信息。我认为这应该是无关的,但以防万一。
  • 您从哪里获得 Tomcat 的 NTLMv2 模块?发布一个链接,我会尝试复制。
  • @T-Heron 没有模块。 Tomcat 会响应您在问题中看到的字节数组。这只是一个 servlet 调用

标签: java tomcat windows-authentication ntlm


【解决方案1】:

如果您使用的是 IE,则无需了解其背后的工作原理,但下面有详细信息。

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

我对 Eric Glass 的代码和解释非常幸运。 http://davenport.sourceforge.net/ntlm.html 附录中的 Java 可以工作,我很幸运地将它转换为 c#,几乎不需要更改任何内容。

【讨论】:

  • 我还是一头雾水。我已经实现了 Type-1 和 Type-2 消息的逻辑,但我希望 IE 自动执行 Type-3 消息。它应该是这样工作的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 2010-12-08
相关资源
最近更新 更多