具有NTLM身份验证的HttpWebRequest 401

时间:2012-02-13 15:54:46

标签: c# httpwebrequest authorization ntlm http-status-code-401

我在向网络服务器验证HttpWebRequest时遇到了困难。我收到的响应只是401.我已确保在C#端正确设置凭据,并且IIS已正确设置为允许NTLM身份验证。我不知道这是否重要,但他的计算机与Web服务器不在同一个域中。

我确定用户/通行证是正确的,但是在用户上配置是否还需要其他授权设置?

如果启用基本身份验证并禁用Windows身份验证,请求将完美运行(当然,正确的C#代码更改)。

我错过了什么?

    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;

下载IIS中我的设置​​的快照。

IIS Authentication Configuration

请求跟踪失败:

Tracing Error Log

2 个答案:

答案 0 :(得分:1)

在同事的帮助下,我们能够确定Windows处理身份验证的方式有问题。看起来本地安全中的设置是错误的。更改本地政策>安全选项>网络访问:本地帐户的共享和安全模型仅限来宾 - 本地用户通过身份验证访问来解决问题。

enter image description here

答案 1 :(得分:0)

凭证缓存行的价值是什么

CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(Url), "NTLM", c);

为什么不简单地设置

webRequest.Credentials = c;

401.2可能意味着您要连接的Web服务器无法使用NTLM(它似乎是根据您的屏幕截图),或者您的客户端和Web服务器之间存在代理