2009-10-05 8 views
6

Chcę zalogować się do portalu SharePoint, który wyświetla okno dialogowe logowania, ale korzysta z uwierzytelniania NTLM. Jak mogę zmodyfikować nagłówki HTTP w języku C#, aby uzyskać pomyślne żądanie logowania? Zakładam, że musiałbym utworzyć HTTPWebRequest na stronie w ramach zalogowanej sekcji portalu i opublikować obok niego kolekcję nagłówków HTTP?Wysyłanie nagłówków HTTP za pomocą żądania HTTP WWW do uwierzytelniania NTLM

Odpowiedz

18

Możesz to zrobić za pomocą klasy 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(); 

Ten kod odczytuje całą odpowiedź do zmiennej o nazwie token.

+7

Podczas próby otrzymuję komunikat "Serwer zdalny zwrócił błąd: (401) Nieautoryzowane". Ten sam adres URL/użytkownik/hasło działa w Firefoksie. NTLM przez HTTP –

2

Aby użyć NTLM, zobacz odpowiedź: John's. Jeśli potrzebujesz nagłówków w różnych sesjach, spójrz na właściwość CookieContainer w obiekcie HttpWebRequest. Będziesz musiał zachować odwołanie do pliku CookieContainer i dołączyć go do innych HttpWebRequests, które tworzysz.