使用HTTP Web请求发送HTTP标头以进行NTLM身份验证

时间:2009-10-05 15:12:24

标签: c# asp.net sharepoint ntlm

我想登录到一个Sharepoint门户,它会打开一个登录对话框但是正在使用NTLM身份验证。如何修改C#中的HTTP标头以成功登录请求?我假设我需要在门户网站的登录部分内对页面进行HTTPWebRequest,并将HTTP头集合与此一起发布?

3 个答案:

答案 0 :(得分:21)

您可以使用WebRequest类执行此操作。

WebRequest req = WebRequest.Create(tokenUri);
req.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested;
req.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
WebResponse resp = req.GetResponse();
StreamReader reader = new StreamReader(resp.GetResponseStream());
var token = reader.ReadToEnd().Trim();

此代码将整个响应读入名为token的变量。

答案 1 :(得分:2)

要使用NTLM,请参阅John's回答。如果您需要跨会话拥有标头,请查看HttpWebRequest对象上的CookieContainer属性。您需要保留对CookieContainer的引用并将其附加到您所做的任何其他HttpWebRequests。

答案 2 :(得分:0)

为了对WebRequest使用NTLM身份验证,凭据信息应存储在 CredentialCache

var request = (HttpWebRequest)WebRequest.Create(url);
// INIT REQUEST HERE ...

var credential = new NetworkCredential(username, password, domain);
var credentialCache = new CredentialCache();
credentialCache.Add(new Uri(url), "NTLM", credential);
request.Credentials = credentialCache;

// SEND ...

来源:http://predicatet.blogspot.com/2007/01/httpwebrequest-networkcredential-with.html

相关问题