我正在使用 Eclipse 开发一个应用程序的两个部分。
Web 部件提供 REST 服务,并使用 waffle.servlet.NegotiateSecurityFilter
过滤对服务的请求,后者提取 Windows 登录信息以识别用户。
客户端部分使用 HttpURLConnection
向 Web 部分发送请求。据我了解,Ntlm 信息会自动打包到请求中。
当我在 eclipse 中测试它时,它运行良好。当我部署客户端 JAR 时,它不起作用。我收到 401 未验证。
经过一些调查后,我发现我可以通过将执行环境设置为 JRE 而不是默认的 JDK 来在 eclipe 中重现这一点。
我安装了 JRE“1.8.0_201”和 JDK“1.8.0_161”。
因此,只需将执行环境从 JRE 更改为 JDK,我就可以获得连接以进行身份验证。
JDK 有什么不同之处,我可以做些什么来让客户端使用 JRE?
最佳答案
我觉得How to provide ntlm authentication while calling any url?的第一个回答可以回答这个问题。 对于 Java 8u201,有一个新的 JRE 选项 jdk.http.ntlm.transparentAuth 默认设置为禁用
关于java - HttpURLConnection 中的 NTLM 身份验证在 JRE 中不起作用,但在 JDK 环境中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54555127/