Puedo indicar a los clientes que SPNEGO es compatible pero NTLM no es para las solicitudes HTTP?
-
20-08-2019 - |
Pregunta
Los dos WWW-Authenticate adiciones de Microsoft hace uso de la que actualmente soy consciente de que son
- NTLM
- Negociar
Si Negociar es enviada desde el servidor, basado en un conjunto de condiciones Kerberos va a ser utilizado
- Zona De Intranet
- El acceso al servidor mediante un nombre de host en lugar de la IP
- La Autenticación de Windows integrada en internet explorer está habilitada, el host de confianza en Firefox
- El Servidor no es local para el navegador
- El cliente del sistema Kerberos es autenticado a un controlador de dominio
Kerberos se llevará a cabo entre el servidor y el cliente, si algo de lo anterior no se cumple, entonces NTLM se intentará.
Mi pregunta es, hay alguna forma para que el servidor para indicar que NTLM no debe ser enviado?Yo actualmente se encargan de esto al mantener un registro de la solicitud en la sesión, y si un NTLM mensaje es recibido, se desactiva Kerberos y WWW-Authenticate para el resto de sesiones de la vida.
Solución
El inicial WWW-Authenticate
encabezado especifica sólo negotiate
.No puede decir nada más, tales como "no NTLM".
Creo que es posible responder a la primera Autenticar:{Base64 NTLMSSP} encabezado enviado por el cliente con 401 unauthorized
y un segundo Negotiate
encabezado, que puede incluir un token de respuesta, incluyendo posiblemente una SupportedMechanisms
que especifica Sólo Kerberos.
Pero sospecho que sólo va a llegar "unauthorized"
, porque era volver a caer en NTLM en el primer lugar.
Otros consejos
Sí puedes. Eche un vistazo a los documentos de referencia del proyecto SPNEGO HTTP Servlet Filter.
Puedes hacer eso, (al menos en teoría) sí. IE podría hacer cosas totalmente extrañas, como enviar tokens Kerberos sin la encapsulación SPNEGO ASN.1 adecuada, pero bueno, ese es un tema diferente. En un SPNEGO conforme ( http://tools.ietf.org/html/rfc4178#section -4.1 ) Implementación podrías hacer eso.
Si puede manipular el miembro NegTokenInit mechTypes para que solo contenga Kerberos, obliga al cliente a enviar Kerberos o no puede autenticarse.