Отправка заголовков HTTP с помощью веб-запроса HTTP для проверки подлинности NTLM - PullRequest
8 голосов
/ 05 октября 2009

Я хочу войти на портал Sharepoint, который вызывает диалог входа в систему, но использует проверку подлинности NTLM. Как я могу изменить заголовки HTTP в C #, чтобы сделать успешный запрос входа? Я предполагаю, что мне нужно будет сделать HTTPWebRequest для страницы в разделе авторизованного раздела портала и опубликовать коллекцию заголовков HTTP вместе с этим?

Ответы [ 2 ]

21 голосов
/ 05 октября 2009

Вы можете сделать это с помощью класса 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.

2 голосов
/ 05 октября 2009

Для использования NTLM см. Ответ Джона . Если вам нужно иметь заголовки между сеансами, посмотрите на свойство CookieContainer объекта HttpWebRequest. Вам нужно будет сохранить ссылку на ваш CookieContainer и прикрепить его к любым другим HttpWebRequest, которые вы делаете.

...