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