password example bearer authentication header http-headers http-authentication

authentication - example - Problemas de autenticación con WWW-Authenticate: Negociar



post header authorization basic (2)

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

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

En básico, usarías algo como:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

¿Qué usaría para negociar?


El servidor web le está solicitando un token SPNEGO ( Mecanismo de negociación GSSAPI simple y protegido ).

Esta es una invención de Microsoft para negociar un tipo de autenticación para usar con SSO web (inicio de sesión único):

  • ya sea NTLM
  • o Kerberos.

Ver:


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

  • Cabecera de respuesta 401 (no autorizada) -> Solicitar encabezado de autenticación

  • Aquí hay varios encabezados de respuesta WWW-Authenticate . (La lista completa se encuentra en IANA: Esquemas de autenticación HTTP ).

    • WWW-Authenticate: Basic -> Authorization: Basic + token - Use para autenticación básica
    • WWW-Authenticate: NTLM -> Authorization: NTLM + token (2 desafíos)
    • WWW-Authenticate: Negotiate -> Authorization: Negotiate + token - utilizado para la autenticación Kerberos
      • Dicho sea de paso: IANA tiene este enfadado comentario sobre Negotiate : este esquema de autenticación viola tanto la semántica HTTP (que está orientada a la conexión) como la sintaxis (uso de sintaxis incompatible con la sintaxis del campo de cabecera WWW-Authenticate and Authorization).

Puede configurar la Authorization: Basic encabezado Authorization: Basic solo cuando también tiene el encabezado WWW-Authenticate: Basic en su desafío 401.

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