2009-01-28 12 views
6

Las dos adiciones WWW-Autenticar Microsoft hace uso de que actualmente estoy consciente de son¿Puedo indicar a los clientes que SPNEGO es compatible pero NTLM no es para solicitudes HTTP?

  • NTLM
  • Negociar

Si Negociar es enviado desde el servidor, basado en un conjunto de condiciones Kerberos se utilizará

  • Intranet Zona
  • Acceso a la servidor utilizando un nombre de host en lugar de IP
  • autenticación integrada de Windows en el IE está activado, el anfitrión es de confianza en Firefox
  • el servidor no es local en el navegador
  • sistema Kerberos del cliente se autentica en un controlador de dominio

Luego se intentará Kerberos entre el servidor y el cliente, si algo anterior no se cumple, entonces se intentará NTLM.

Mi pregunta es, ¿hay alguna forma de que el servidor indique que no se debe enviar NTLM? Actualmente me encargo de esto haciendo un seguimiento de la solicitud en la sesión, y si se recibe un mensaje NTLM, deshabilita Kerberos y WWW-Authenticate por el resto de la vida de esas sesiones.

+0

¿Está deshabilitando NTLM debido a problemas de delegación? –

+0

No, es simplemente algo que no soporto actualmente en el complemento Tomcat JAAS que he creado. Solo es compatible con Kerberos/SPNEGO. –

Respuesta

2

El encabezado inicial WWW-Authenticate solo especifica negotiate. No puede decir nada más, como "no NTLM".

creo que es posible responder a la primera Autenticación: {} Base 64 NTLMSSP encabezado enviado por el cliente con 401 unauthorized y una segunda cabecera Negotiate, que puede incluir un token de respuesta, posiblemente incluyendo un SupportedMechanisms que especifica solamente Kerberos.

Pero sospecho que solo obtendrá "unauthorized", ya que en primer lugar estaba recayendo en NTLM.

+0

Voy a analizar esto. La mayoría de los casos de degradación de Kerberos/SPNEGO que he visto se deben a que Kerberos está fallando en ese escritorio de Windows o a una mala configuración del entorno. Hay algunos requisitos muy arbitrarios e indocumentados que IE tiene que hacer Kerberos sobre NTLM. –

+0

@ScottMarkwell He notado lo mismo, pero sería bueno conseguir que IE solicite credenciales e incluso obtener un boleto de servicio directamente en lugar de ir por la ruta de repliegue NTLM. – davenpcj

1

Puede hacer eso, (al menos en teoría) sí. IE podría hacer cosas totalmente extrañas, como enviar Kerberos Tokens sin la correspondiente encapsulación SPNEGO ASN.1, pero bueno, ese es un tema diferente. En una implementación conforme a SPNEGO (http://tools.ietf.org/html/rfc4178#section-4.1) puede hacerlo.

Si puede manipular el miembro NegTokenInit mechTypes para que solo contenga Kerberos, obliga al cliente a enviar Kerberos o no puede autenticarse.

+0

El problema general es que Micorsoft mezcló SPNEGO/GSS-API con su funcionalidad NTLM existente. Entonces no se garantiza una negociación real. –

3

Sí, puedes. Eche un vistazo al reference docs del proyecto SPNEGO HTTP Servlet Filter.

+0

En realidad, solo me preocupa el nivel de protocolo de HTTP/WWW-Authenticate Negotiate. De hecho, lancé mi propia implementación. Gracias por vincularme a este proyecto, ya que no estaba al tanto de que alguien también haya desarrollado una solución (parece que llegó a sourceforge ~ 2weeks atrás) –

Cuestiones relacionadas