gpt4 book ai didi

java - 使用 httpclient 4.2.1 进行 NTLM 身份验证

转载 作者:行者123 更新时间:2023-12-02 05:51:35 25 4
gpt4 key购买 nike

我需要对需要 NTLM 身份验证的 URL 执行 HTTP GET。我可以在 MacBook Pro 上使用 Firefox 或 Chrome 访问该 URL。浏览器要求输入用户名/密码组合,并且它可以工作。我现在尝试使用 HttpClient 从 Groovy 执行相同的操作。我关注了NTLM support guide ,但我总是收到 401 Unauthorized 回复。回复中还有这样一句话:

You do not have permission to view this directory or page using the credentials that you supplied because your Web browser is sending a WWW-Authenticate header field that the Web server is not configured to accept.

我在这段代码中尝试了服务器名称和域的各种组合(远程 Windows 电脑不在域中),但我总是得到相同的响应。

httpclient.getCredentialsProvider().setCredentials(
new AuthScope("myserver", -1),
new NTCredentials("username", "password", "MYSERVER", "MYDOMAIN"));

有人遇到同样的问题并成功解决了吗?请注意,这是一个在底层使用 IIS 的外部程序,因此我认为我无法更改其中的任何设置。

编辑:

与我所说的不同,我设法更改 IIS 中的安全设置以接受 BASIC 身份验证,因此我不再遇到问题。

最佳答案

编辑:

根据我设置 Kerberos 或 NTLM(两者都是单点登录)的经验,当您已经登录到系统时,根本不需要输入用户名/密码。

我非常确定,当浏览器要求输入用户名/密码组合时,这根本不是 NTLM 身份验证。服务器端应用程序很可能有一个 HTTP Basic Digest 的后备方案(这就是它显示用户名/密码组合的原因)。使用 NTLM,您根本不需要输入用户名/密码(主体/凭据),因为服务器将通过浏览器、操作系统、服务器和 Active Directory 服务器之间的协商机制识别您是谁。

如果您的 MacBook Pro 在 OS/X 上运行,您还需要将 OS/X 添加到域中。您的服务器还需要位于添加客户端 OS/X 的同一域中。这可能不是一个小案子。可能需要一些外部工具/驱动程序。 This one可能是一个不错的候选人(但我还没有尝试过)。

NTLM 需要客户端和服务器都是同一域的成员,因此两者都需要在 Active Directory 域中注册。如果您的服务器不在域中,那么这将是另一组问题。

为了让您的浏览器与 NTLM 兼容,您需要安装插件(ntlmauth-plugin?)。但我还没有在 MacOS/X 上尝试过。即使在 Windows 中,您仍然需要一个插件才能使用 NTLM 成功运行 Firefox。

关于java - 使用 httpclient 4.2.1 进行 NTLM 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12726929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com