Domanda

Ho provato a eseguire un POST usare un HttpWebRequest istanza per un URL Web che richiede un'autenticazione (un ASP.NET MV3 standart [Authorize] Metodo d'azione decorato con il sistema di appartenenza a build), ma fornendo accesso e passowrd come NetworkCredentials in HttpWebRequest non ha fatto il trucco.

Ho finito per usare un globale CookieContainer e due HttpWebRequests:

  1. Imposta una richiesta CookieContainer a globalCookieContainer.
  2. Pubblica nome utente e password a un URL di accesso. (Dopo quel passaggio il contenitore segnala ancora che il conteggio dei cookie è 0).
  3. Crea un altro HttpWebRequest istanza e impostare il globalCookieContainer a richiedere CoockieContainer.
  4. Pubblica in un URL finale che richiede l'autenticazione. Per qualche motivo, questa volta l'oggetto secondo richiesta fornisce i cookie come parte di una richiesta e passa.

Un'intera "magia" della gestione dei cookie non è descritta da nessuna parte (ho davvero cercato di cercare).

Abbiamo coperto questo scenario. Ma in quali casi HttpWebRequest.Credentials dovrebbe essere usato?

È stato utile?

Soluzione

HttpWebRequest.Credentials è pensato per essere utilizzato quando l'autenticazione viene eseguita attraverso uno degli schemi in AuthenticationSchemes enum. Tra gli altri, questo include l'auth HTTP di base e digest, NTLM e Kerberos.

Detto questo, puoi cucinare i tuoi schemi di autenticazione personalizzati derivando NetworkCredential Sul lato client e implementazione IAuthenticationModule Sul lato server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top