2010-08-11 17 views

risposta

8

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.

+0

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

+1

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

1

Se si tratta di uno scenario scatola nera, di solito mi collego con Fiddler e ispeziono il traffico effettivo.

4

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 ;-).

+0

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

+0

@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 ... :-( –

Problemi correlati