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