2010-11-24 21 views
25

Sto tentando di accedere a un sito protetto da password. Non sta utilizzando l'autenticazione di base (anche se lo stesso utente/pass box si apre in firefox) poiché l'intestazione della risposta è WWW-Authenticate: Negotiate.Problemi di autenticazione con autenticazione WWW: negoziare

voglio automatizzare il processo di login inviando l'intestazione corretta.

In base si può usare qualcosa di simile:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

Cosa dovrei usare per negoziare?

+1

Il WWW-Authenticate: Negoziare intestazione significa che il server può utilizzare NTLM o Kerberos (almeno su OS precedenti a Windows 7 e Windows 2008 Server, quando sono stati aggiunti ulteriori provider di supporto per la sicurezza) per l'autenticazione e la crittografia. In questo caso di NTLM la negoziazione richiede che vengano scambiati più messaggi (challenge/responses) prima che venga stabilita la sessione protetta, quindi non è possibile inviare "header corretto" dall'inizio. È possibile trovare i dettagli relativi al problema http://msdn.microsoft.com/en-us/library/aa378748%28VS.85%29.aspx (pacchetti SSP forniti da Microsoft). –

risposta

24

Il server Web richiede un token SPNEGO (token di negoziazione GSSAPI semplice e protetto).

Questa è un'invenzione di Microsoft per la negoziazione di un tipo di autenticazione da utilizzare per Web SSO (single-sign-on):

  • NTLM
  • o Kerberos.

See:

+2

In una delle applicazioni con cui sto lavorando, il server ADFS risponde con due campi di intestazione WWW-Authenticate nella risposta con i valori WWW-Authenticate: Negoziare WWW-Authenticate: NTLM Cosa fa la prima intestazione con "Negozia" significare? Dal violinista come può capire quale protocollo di autenticazione viene utilizzato in definitiva? –

+0

Vecchio commento troppo vecchio. Risposta per i futuri lettori. È possibile controllare il violinista per verificare quale meccanismo di autenticazione viene utilizzato. Penso che il tuo server sia abilitato sia con autenticazione Kerberos che NTLM. Dal violinista puoi facilmente verificare quale autenticazione viene utilizzata. Controlla l'intestazione sulla risposta del browser alla sfida 401 (che è un'intestazione della richiesta). Se questo contiene Autorizzazione: token NTLM +, allora è l'autenticazione NTLM. In caso di autorizzazione: negoziare + token dovrebbe essere kerberos. Nota NTLM ha più di una sfida 401. – Charith

28

Mettendo queste informazioni qui a beneficio futuri lettori.

  • 401 (Unauthorized) response header -> Richiesta autenticazione dell'intestazione

  • Qui ci sono diversi WWW-Authenticate response headers. (L'elenco completo è a IANA: HTTP Authentication Schemes.)

    • WWW-Authenticate: Basic -> Autorizzazione: + gettone di base - utilizzare per l'autenticazione di base
    • WWW-Authenticate: NTLM -> Autorizzazione: NTLM + gettone (2 sfide)
    • WWW-Authenticate: Negotiate - > Autorizzazione: Negoziare + Token - utilizzata per l'autenticazione Kerberos
      • a proposito: IANA ha questo angry remark about Negotiate: questo schema di autenticazione viola sia la semantica HTTP (essendo collegamento -orientato) e sintassi (uso della sintassi incompatibile con la sintassi del campo dell'intestazione dell'autenticazione WWW e dell'autorizzazione).

È possibile impostare l'intestazione Authorization: Basic solo quando si ha anche la WWW-Authenticate: Basic intestazione sulla vostra sfida 401.

Ma dal momento che si dispone di WWW-Authenticate: Negotiate questo dovrebbe essere il caso per l'autenticazione basata Kerberos.