【发布时间】: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