11

我想登录到一个 Sharepoint 门户,该门户会显示一个登录对话框,但使用的是 NTLM 身份验证。如何修改 C# 中的 HTTP 标头以发出成功的登录请求?我假设我需要向门户的登录部分中的页面发出 HTTPWebRequest 并在此旁边发布 HTTP 标头集合?

4

3 回答 3

23

您可以使用 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.

于 2009-10-05T15:18:07.953 回答
3

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

于 2009-10-05T15:20:26.983 回答
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

于 2020-12-10T15:46:34.183 回答