2009-10-05 23 views
6

Quiero iniciar sesión en un portal Sharepoint que abre un cuadro de diálogo de inicio de sesión pero está utilizando la autenticación NTLM. ¿Cómo puedo modificar los encabezados HTTP en C# para hacer una solicitud de inicio de sesión exitosa? ¿Asumo que necesitaría hacer una HTTPWebRequest a una página dentro de la sección de inicio de sesión del portal y publicar la colección de encabezados HTTP junto a esto?Enviando encabezados HTTP con HTTP Web Request para autenticación NTLM

Respuesta

18

Puede hacerlo utilizando la clase 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(); 

Este código lee toda la respuesta en una variable llamada token.

+7

Al intentar esto me aparece 'El servidor remoto devolvió un error: (401) No autorizado'. Misma URL/usuario/contraseña funcionan en Firefox. NTLM a través de HTTP –

2

Para usar NTLM, vea John's answer. Si necesita tener encabezados en todas las sesiones, busque en la propiedad CookieContainer en el objeto HttpWebRequest. Deberá mantener una referencia a su CookieContainer y adjuntarlo a cualquier otra HttpWebRequests que haga.