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
6
A
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
.
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.
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 –