Puis-je indiquer aux clients que SPNEGO est pris en charge mais que NTLM ne convient pas aux requêtes HTTP?

StackOverflow https://stackoverflow.com/questions/489950

Question

Les deux ajouts WWW-Authenticate que Microsoft utilise sont ceux que je connais actuellement

  • NTLM
  • Négocier

Si Negotiate est envoyé depuis le serveur, Kerberos sera utilisé en fonction d'un ensemble de conditions

  • Zone Intranet
  • Accéder au serveur en utilisant un nom d'hôte plutôt que IP
  • L’authentification Windows intégrée dans IE est activée, l’hôte est approuvé dans Firefox
  • Le serveur n'est pas local sur le navigateur
  • Le système Kerberos du client est authentifié auprès d'un contrôleur de domaine

Ensuite, Kerberos sera tenté entre le serveur et le client. Si quelque chose de précédent n'est pas respecté, NTLM sera tenté.

Ma question est la suivante: le serveur a-t-il un moyen d'indiquer que NTLM ne doit pas être envoyé? Je gère actuellement cela en gardant une trace de la demande dans la session et si un message NTLM est reçu, il désactive Kerberos et WWW-Authenticate pour le reste de la vie de cette session.

Était-ce utile?

La solution

L'en-tête WWW-Authenticate initial spécifie uniquement negotiate. Elle ne peut rien dire de plus, comme & "Pas de NTLM &"; .

.

Je pense qu'il est possible de répondre au premier en-tête Authenticate: {Base64 NTLMSSP} envoyé par le client avec 401 unauthorized et à un deuxième Negotiate en-tête, qui peut inclure un jeton de réponse, comprenant éventuellement un SupportedMechanisms qui spécifie Kerberos uniquement.

Mais je soupçonne que cela ne vous concernera que "unauthorized", car il s’agissait au départ de NTLM.

Autres conseils

Oui, vous le pouvez. Consultez la documentation de référence du projet de filtre de servlets HTTP SPNEGO.

Vous pouvez le faire (du moins en théorie), oui. IE peut faire des choses totalement étranges, comme envoyer des jetons Kerberos sans l’encapsulation ASN.1 appropriée, mais bon, c’est un sujet différent. Dans un SPNEGO conforme ( http://tools.ietf.org/html/rfc4178#section -4.1 ) Vous pouvez le faire.

Si vous pouvez manipuler le membre mechTypes de NegTokenInit pour ne contenir que Kerberos, il oblige le client à envoyer Kerberos ou à ne pas s'authentifier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top