Warm tip: This article is reproduced from serverfault.com, please click

其他-使用RestSharp / System.Net.Http通过OData访问本地Dynamics v8

(其他 - Accessing on-premise Dynamics v8 via OData using RestSharp/System.Net.Http)

发布于 2020-12-08 14:34:25

我正在尝试使用RestSharp / System.Net.Http通过OData WebService从本地Dynamics(v8)访问数据,但是在这种情况下,我有点卡住了。我现在摆弄了几天,问题似乎出在身份验证周围,但是我不知道自己在做什么错。

我发送GET请求的URLhttps://host.fqdn/systemenv01/api/data/v8.2/$metadata使用的是有效的Windows域用户帐户,该帐户可以正常登录动态。当我在Firefox或使用NTLM-Auth的最新版本的Postman(v7.36)中尝试此操作时,得到的结果是正确的元数据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);

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

Questioner
grinsehinze
Viewed
11
2,305 2020-12-10 08:29:23

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

当我用其IP地址替换Dynamics系统的域名时,身份验证可以完美地工作。

我不确定这一点,但该域位于.dev默认情况下已激活HSTS的TLD之下

我什至尝试使用另一个TLD(是.net)中的另一个FQDN进行连接,而且效果也很好。

因此,我认为问题出在HSTS的配置和处理。