Come si determina se un servizio web REST utilizza Basic, Kerberos, NTLM o uno dei molti altri metodi di autenticazione?determinazione dei metodi di autenticazione http web
risposta
Quando si invia una richiesta non autenticata del servizio deve rispondere con un "HTTP/1.1 401 non autorizzato" e la risposta contiene un'intestazione WWW-Authenticate
che specifica quale schema di autenticazione è prevista (Basic
, Digest
), il regno di sicurezza e qualsiasi altro valore specifico (come il nonce di Digets). Quindi, se il server risponde con:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="example.com",
qop="auth,auth-int",
nonce="...",
opaque="..."
desidera un'autenticazione del digest. Se la risposta è la seguente:
HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic realm="example.com"
quindi desidera un'autenticazione di base. Alcuni server/siti implementati (malamente) non gestiscono correttamente il Basic e rispondono direttamente con 403 Proibidden anziché prima impegnativo.
NTLM è simile in quanto il server risponde con un 401 e un'intestazione WWW-Authenticate con il valore NTLM
, ma non esiste alcuna specifica pubblica ufficiale, poiché è di proprietà di Microsoft. Ci sono varie descrizioni reverseengineered.
Sfortunatamente REST non viene fornito con una descrizione del servizio WSDL in stile per scoprire lo schema di autenticazione utilizzato a priori.
Se si tratta di uno scenario scatola nera, di solito mi collego con Fiddler e ispeziono il traffico effettivo.
Inviate una richiesta, presumibilmente otterrete un codice HTTP 401 e guardate l'intestazione WWW-Authenticate
che (per RFC 2616) include la risposta MUST
. Se invece ottieni un 403 o qualche altro strano stato, o un'intestazione mancante WWW-Authenticate
, maledici gli autori del sito web che non seguono il core RFC HTTP e inizi a sniffare il traffico per provare a decodificare quale disordine non standard hanno fatto questo tempo ;-).
Vorrei poter selezionare due risposte valide, il problema era che il servizio REST non restituiva un'intestazione WWW-Authenticate, quindi ho dovuto aggiungere manualmente l'intestazione con il codice da: http://devproj20.blogspot.com/ 2008/02/assigning-basic-authorization-http.html – Seph
@Seph, sì, il numero di siti danneggiati nel web è sbalorditivo, non è vero? Non importa quanto sia chiara una RFC (e non diventa molto più chiara di "MUST" ;-) c'è _always_ un sacco di "programmatori" (HA!) Che pensano che siano semplicemente troppo speciali per leggere o rispettare , noioso docs ... :-( –
- 1. Autenticazione dei servizi web WCF Rest
- 2. Autenticazione HTTP REST: come?
- 3. Test dei metodi che effettuano richieste http
- 4. Determinazione dei poteri di 2?
- 5. cache di autenticazione http
- 6. C# - richiesta Web http con https e autenticazione di base
- 7. Webdriver - Finestra di autenticazione HTTP
- 8. Microsoft.Http.HttpClient, invio corretto dei parametri di autenticazione HTTP sui reindirizzamenti
- 9. PostgreSQL metodi di autenticazione multipli
- 10. Determinazione dei requisiti di sistema consigliati
- 11. Autenticazione tramite http utilizzando la web API in asp.net
- 12. Autenticazione di base HTTP condizionale
- 13. servizio web asmx: autenticazione client
- 14. Autenticazione con Akka-Http
- 15. Autenticazione HTTP in J2ME
- 16. Autenticazione Digest HTTP
- 17. jQuery Autenticazione HTTP
- 18. Invio di intestazioni HTTP con richiesta HTTP Web per autenticazione NTLM
- 19. Autenticazione digest HTTP con HttpUrlConnection
- 20. XmlSlurper.parse (uri) con autenticazione di base HTTP
- 21. Ajax: autenticazione di base HTTP e cookie di autenticazione
- 22. Autenticazione di base HTTP, utilizzando python
- 23. Autenticazione HTTP - Intestazione WWW-Authenticate - regni multipli
- 24. Cloudera Manager Autenticazione fallita: metodi di autenticazione disponibili esauriti
- 25. Metodi di autenticazione di più servlet java
- 26. LWP :: UserAgent autenticazione HTTP di base
- 27. Metodi HTTP disabilitati su Heroku
- 28. Elevazione dei privilegi in un'applicazione Web MVC3 con autenticazione Windows
- 29. Autenticazione di base del servizio Web Asmx
- 30. net.schmizz.sshj.userauth.UserAuthException: Exhausted metodi di autenticazione disponibili
il problema era che il servizio REST non tornava con nessuna intestazione WWW-Authenticate a tutti nel 401 quindi dovevo specificare manualmente l'intestazione – Seph
Ho solo bisogno di 1 penny per ogni sito web che fa quello (non gestire Basic con la sfida corretta) e posso andare in pensione ... –