2009-10-05 4 views
6

Desidero accedere a un portale Sharepoint che visualizza una finestra di dialogo di accesso ma utilizza l'autenticazione NTLM. Come posso modificare le intestazioni HTTP in C# per effettuare una richiesta di accesso corretta? Presumo che avrei bisogno di fare una HTTPWebRequest su una pagina all'interno della sezione loggata del portale e postare la collezione di intestazioni HTTP insieme a questa?Invio di intestazioni HTTP con richiesta HTTP Web per autenticazione NTLM

risposta

18

È possibile eseguire questa operazione utilizzando la classe 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(); 

Questo codice legge l'intera risposta in una variabile denominata token.

+7

Durante il tentativo, viene visualizzato il messaggio "Il server remoto ha restituito un errore: (401) Non autorizzato". Lo stesso URL/utente/password funzionano su Firefox. NTLM su HTTP –

2

Per utilizzare NTLM vedere la risposta John's. Se è necessario disporre di intestazioni tra le sessioni, esaminare la proprietà CookieContainer sull'oggetto HttpWebRequest. Dovrai mantenere un riferimento al tuo CookieContainer e collegarlo a qualsiasi altro HttpWebRequests che fai.