使用 RestSharp/System.Net.Http 通过 OData 访问 on-premise Dynamics v8

Accessing on-premise Dynamics v8 via OData using RestSharp/System.Net.Http

我正在尝试使用 RestSharp / System.Net.Http 通过 OData WebService 从我们的 on-premise Dynamics (v8) 访问数据,但在这种情况下,我有点卡住了。我摆弄了几天,问题似乎出在身份验证的某个地方,但我不知道我做错了什么。

我发送 GET-Request 的 URL 是 https://host.fqdn/systemenv01/api/data/v8.2/$metadata 使用有效的 Windows 域用户帐户,能够正常登录动态。当我在 Firefox 或最新版本的 Postman (v7.36) 中使用 NTLM-Auth 尝试此操作时,我得到了正确的元数据 XML 作为结果。

但是当我尝试使用 RestSharp 或简单地 System.Net.Http 进行相同操作时,我只收到 HTTP401-Unauthorized 作为响应。我试图做的是将用户凭据设置为像

这样的 NetworkCredentials
var client = new RestClient(Url);
var request = new RestRequest(Method.GET);
client.FollowRedirects = true;
client.Timeout = -1;
client.PreAuthenticate = true;
request.Credentials = new NetworkCredential(User, Password);

但这似乎根本没有任何区别。有趣的是,响应包含一个 header,名称为“WWW-Authenticate”,值为“Negotiate some.encrypted.string”,但我不知道我应该用它做什么。如果有人可以帮助我解决这个问题,那就太好了! 提前致谢!

我发现了一些很有趣的东西:

当我将 Dynamics 系统的域名替换为它的 IP 地址时,身份验证工作完美。

我不确定,但此域位于默认激活 HSTS 的 TLD .dev 之下。

我什至尝试使用来自另一个 TLD(.net)的另一个 FQDN 进行连接,这也非常有效。

因此我断定问题出在 HSTS 的配置和处理上。