2010-11-24 13 views
25

Estoy intentando acceder a un sitio que está protegido por contraseña. No está utilizando autenticación básica (aunque el mismo cuadro de usuario/contraseña aparece en Firefox) ya que el encabezado de respuesta es WWW-Authenticate: Negotiate.Problemas de autenticación con WWW-Authenticate: negociar

Deseo automatizar el proceso de inicio de sesión enviando el encabezado correcto.

En básico que usaría algo como:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

¿Qué iba a utilizar para negociar?

+1

WWW-Authenticate: Negotiate header significa que el servidor puede usar NTLM o Kerberos (al menos en el sistema operativo anterior a Windows 7 y Win 2008 Server cuando se agregaron proveedores adicionales de soporte de seguridad) para la autenticación y el cifrado. En este caso de NTLM, la negociación requiere que se intercambien múltiples mensajes (desafío/respuestas) antes de que se establezca la sesión segura, por lo que no hay un "encabezado correcto" para enviar desde el principio. Puede encontrar detalles sobre su problema http://msdn.microsoft.com/en-us/library/aa378748%28VS.85%29.aspx (paquetes SSP provistos por Microsoft). –

Respuesta

24

El servidor web le solicita un token SPNEGO (Simple and Protected GSSAPI Negotiation Negotiation).

Este es un invento de Microsoft para la negociación de un tipo de autenticación que se utilizará para la Web SSO (single-sign-on):

  • NTLM
  • o Kerberos.

Ver:

+2

En una de las aplicaciones con las que estoy trabajando, el servidor ADFS responde con dos campos de encabezado WWW-Authenticate en la respuesta con los valores WWW-Authenticate: Negociar WWW-Authenticate: NTLM ¿Qué significa el primer encabezado con "Negotiate"? ¿media? Desde el violinista, ¿cómo se puede saber qué protocolo de autenticación se usa en última instancia? –

+0

Demasiado viejo comentario. En respuesta para futuros lectores. Puede verificar el violín para verificar qué mecanismo de autenticación se está utilizando. Creo que su servidor está habilitado con autenticación Kerberos y NTLM. Desde Fiddler puedes verificar fácilmente qué autenticación se está utilizando. Compruebe el encabezado de la respuesta de su navegador al desafío 401 (que es un encabezado de solicitud). Si eso contiene autorización: NTLM + token, entonces es la autenticación NTLM. En caso de Autorización: Negociar + token debe ser kerberos. Tenga en cuenta que NTLM tiene más de un 401 desafíos. – Charith

28

Poniendo esta información aquí para beneficio futuros lectores.

  • 401 (Unauthorized) response header -> Solicitud encabezado de autenticación

  • Aquí hay varias WWW-Authenticate response headers. (La lista completa está en la IANA: HTTP Authentication Schemes.)

    • WWW-Authenticate: Basic -> Autorización: fichas Básico + - Utilice para la autenticación básica
    • WWW-Authenticate: NTLM -> Autorización: NTLM + token (2 desafíos)
    • WWW-Authenticate: Negotiate - > Autorización: Negociar + símbolo - se utiliza para la autenticación Kerberos
      • por cierto: IANA tiene esta angry remark about Negotiate: este esquema de autenticación viola tanto la semántica HTTP (siendo la conexión orientado) y sintaxis (uso de sintaxis incompatible con la sintaxis de campo de cabecera WWW-Authenticate and Authorization).

puede establecer el encabezado Authorization: Basic sólo cuando usted también tiene la cabecera WWW-Authenticate: Basic en su desafío 401.

Pero como tiene WWW-Authenticate: Negotiate este debería ser el caso para la autenticación basada en Kerberos.

Cuestiones relacionadas