2009-10-05 12 views
6

Ich möchte mich bei einem Sharepoint-Portal anmelden, das einen Anmeldedialog aufruft, jedoch die NTLM-Authentifizierung verwendet. Wie kann ich die HTTP-Header in C# ändern, um eine erfolgreiche Anmeldeanforderung zu stellen? Ich nehme an, dass ich eine HTTPWebRequest zu einer Seite innerhalb des eingeloggten Abschnitts des Portals machen und die HTTP-Überschriftenansammlung neben diesem setzen sollte?Senden von HTTP-Headern mit HTTP-Webanforderung für NTLM-Authentifizierung

Antwort

18

Sie können dies mithilfe der WebRequest-Klasse tun.

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(); 

Dieser Code liest die gesamte Antwort in eine Variable token genannt.

+7

Wenn ich dies versuche, bekomme ich 'Der Remote-Server gab einen Fehler zurück: (401) Nicht autorisiert'. Gleiche URL/Benutzer/Passwort funktionieren unter Firefox. NTLM über HTTP –

2

Um NTLM zu verwenden, siehe John's Antwort. Wenn Sie übergreifende Header benötigen, sehen Sie sich die CookieContainer-Eigenschaft des HttpWebRequest-Objekts an. Sie müssen einen Verweis auf Ihren CookieContainer beibehalten und ihn an andere von Ihnen erstellte HttpWebRequests anhängen.