Windows 挑战/响应 (NTLM) 是用于网络的身份验证协议,包括运行 Windows 操作系统的系统和独立系统。我能够使用org.apache.http.client.HttpClient 版本4.4 处理NTLM 身份验证。
这是我使用的 Maven 依赖项(方法和方法名称在其他版本中可能略有不同)。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4</version>
</dependency>
实施需要以下导入。这是非 SSL 连接的基本要求。
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.NTCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.HttpClientBuilder;
这里是实现。需要用真实凭据替换Username、Password和Domain。
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
HttpClient httpClient = HttpClientBuilder.create()
.setDefaultCredentialsProvider(credentialsProvider)
.build();
credentialsProvider.setCredentials(AuthScope.ANY, new NTCredentials("Username", "Password", null, "Domain"));
现在这个 http 客户端可用于与 Dynamics NAV API 进行通信。
但我在我所在的地区(亚洲)找不到 Microsoft Dynamics NAV 的免费测试环境。但很少有云服务提供商会为其他地区提供免费测试。
作为 Linux 用户,我必须在虚拟环境中安装 Windows 并在其上安装 Dynamics NAV 以创建测试环境。如果您熟悉 Docker,可以从 this link 下载 Dynamics NAV Docker 映像。