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

385 views Asked by At

I'm trying to access data from our on-premise Dynamics (v8) via OData WebService using RestSharp / System.Net.Http but in this case, I'm kind of stuck. I fiddled around a couple of days now and the problem seems to be somewhere around the authentication but I don't know what I'm doing wrong.

The URL I'm sending a GET-Request to is https://host.fqdn/systemenv01/api/data/v8.2/$metadata using a valid Windows domain user account that is able to log on to the dynamics normally. When I try this in Firefox or the latest version of Postman (v7.36) using NTLM-Auth I get a proper metadata XML as the result.

But when I try the same using RestSharp or simply System.Net.Http I only get an HTTP401-Unauthorized as a response. What I tried to do is setting the user credentials as NetworkCredentials like

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);

but this doesn't seem to make any difference at all. Interestingly the response contains a header with the name "WWW-Authenticate" and the value "Negotiate some.encrypted.string" but I don't know what I should use this for. Would be great if someone could help me get this solved! Thanks in advance!

1

There are 1 answers

0
grinsehinze On BEST ANSWER

I found something very interesting:

The authentication works perfectly when I replace the domain name of the Dynamics system with its IP address.

I do not know this for sure but this domain is below the TLD .dev which has HSTS activated by default.

I even tried connecting using another FQDN from another TLD (which was .net) and this worked perfectly as well.

Therefore I conclude the issue is originated in the configuration and handling of HSTS.