我需要对需要 NTLM 身份验证的 URL 执行 HTTP GET。我可以在 MacBook Pro 上使用 Firefox 或 Chrome 访问该 URL。浏览器要求输入用户名/密码组合并且它可以工作。我现在正在尝试使用 HttpClient 从 Groovy 做同样的事情。我遵循了NTLM 支持指南,但我总是得到401 Unauthorized
回报。回复中还有这句话:
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未配置为接受的 WWW-Authenticate 标头字段。
我在这段代码中尝试了服务器名和域的各种组合(远程 windows pc 不在域上),但我总是得到相同的响应。
httpclient.getCredentialsProvider().setCredentials(
new AuthScope("myserver", -1),
new NTCredentials("username", "password", "MYSERVER", "MYDOMAIN"));
有人遇到同样的问题并设法解决了吗?请注意,这是一个在后台使用 IIS 的外部程序,所以我认为我不能在那里更改任何设置。
编辑:
与我所说的不同,我设法将 IIS 中的安全设置更改为接受 BASIC 身份验证,所以我不再遇到问题了。