HttpWebRequest 401 with NTLM Authenticiation

13,070

With the help of a colleague, we were able to determine something was wrong in the way Windows was dealing with the authentication. Looks like a setting in the Local Security was wrong. Changing Local Policies > Security Options > Network access: Sharing and security model for local accounts from Guest only - local users authenticate as Guest to Classic fixed the problem.

enter image description here

Share:
13,070
cgatian
Author by

cgatian

Updated on June 05, 2022

Comments

  • cgatian
    cgatian almost 2 years

    I am having difficulties authenticating a HttpWebRequest to a webserver. The response I am receiving is simply a 401. I've made sure I set the credentials correctly on the C# side, and IIS is correctly set to allow NTLM authentication. I don't know if this matters, but he computer is not on the same domain as the the web server.

    I am sure the user/pass is correct but are there any other authorization settings needed to configure on the user?

    If I enable Basic authentication, and disable Windows Authentication, the request works perfectly (with the correct C# code changes of course).

    What am I missing?

        webRequest.UseDefaultCredentials = false;
        webRequest.PreAuthenticate = true;
        var c = new NetworkCredential("User", "password", "domain");
    
        CredentialCache credentialCache = new CredentialCache();
        credentialCache.Add(new Uri(Url), "NTLM", c);
        webRequest.Credentials = credentialCache;
    

    Heres a snapshot of my settings in IIS.

    IIS Authentication Configuration

    Failed Request Tracing:

    Tracing Error Log

  • cgatian
    cgatian about 12 years
    Yes you could do that. Either does the same.
  • cgatian
    cgatian about 12 years
    I am making the request over a VPN, could that be issue?
  • Ben Robinson
    Ben Robinson about 12 years
    It could be the issue yes, it depends on many things, but yeah it could be messing with the NTLM challenge/response mechanism. Can you test the code from inside the network to see if that makes any difference.