Quando è necessario utilizzare httpwebrequest.credentials
-
28-10-2019 - |
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
:
- Imposta una richiesta
CookieContainer
aglobalCookieContainer
. - Pubblica nome utente e password a un URL di accesso. (Dopo quel passaggio il contenitore segnala ancora che il conteggio dei cookie è 0).
- Crea un altro
HttpWebRequest
istanza e impostare ilglobalCookieContainer
a richiedereCoockieContainer
. - 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?
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.