Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HttpWebRequest DefaultNetworkCredentials give error 401

Im trying to request a url that require windows authentication using HttpWebRequest, I was using

request.Credential = New NetworkCredential("username", "password");

everything was working find until I decide not to hardcord the username and password, and switch to

request.Credential = CredentialCache.DefaultNetworkCredentials;

then i got 401 unauthenticated error. I checked my user with

WindowsIdentity.GetCurrent();

It returns my username correctly, but the

CredentialCache.DefaultNetworkCredentials;

return me empty string for username, domain... pretty much everything is empty string.. Too bad that the HttpWebRequest.Credential is expecting ICredential means i can't set WindowsIdentity.GetCurrent() to it.

Is there anyway that i could pass my current login user to the HttpWebRequest.Credential??

Is CredentialCache.DefaultNetworkCredentials; the correct way? or im just missing some settings?

I had read through some artical like this one http://msdn.microsoft.com/en-us/library/ms998351.aspx.

It is either too long and too complicated for me to understand or it doesn't work. Im new to this, hope to get some straight foward answer here.

like image 999
Jerry Lam Avatar asked Jul 30 '13 09:07

Jerry Lam


1 Answers

If you are using basic authentication, then this will not work. See this question: HttpWebRequest with basic authentication fails with 401 erorr for DefaultNetworkCredentials

And this microsoft article states, that DefaultCredentials just apply to NTLM, negotiate, and Kerberos-based authentication. http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials.aspx

For information purposes this is an article explaining the authentication methods in short: http://msdn.microsoft.com/en-us/library/ms789031.aspx

like image 119
Kai Hartmann Avatar answered Oct 17 '22 12:10

Kai Hartmann