Posso indicare ai client che SPNEGO è supportato ma NTLM non è per le richieste HTTP?
-
20-08-2019 - |
Domanda
Le due aggiunte autenticate al WWW di cui Microsoft fa attualmente uso sono
- NTLM
- Negoziare
Se Negozia viene inviato dal server, in base a una serie di condizioni verrà utilizzato Kerberos
- Zona Intranet
- Accesso al server utilizzando un nome host anziché IP
- L'autenticazione integrata di Windows in IE è abilitata, l'host è attendibile in Firefox
- Il server non è locale per il browser
- Il sistema Kerberos del client è autenticato su un controller di dominio
Quindi Kerberos verrà tentato tra il server e il client, se qualcosa sopra non viene soddisfatto, verrà tentato NTLM.
La mia domanda è: c'è un modo per il server di indicare che NTLM non dovrebbe essere inviato? Attualmente lo gestisco tenendo traccia della richiesta nella sessione e, se viene ricevuto un messaggio NTLM, disabilita Kerberos e WWW-Authenticate per il resto della vita di quella sessione.
Soluzione
L'intestazione iniziale WWW-Authenticate
specifica solo negotiate
. Non può dire altro, come & Quot; no NTLM & Quot; .
Penso che sia possibile rispondere alla prima autenticazione: {Base64 NTLMSSP} intestazione inviata dal client con 401 unauthorized
e una seconda Negotiate
intestazione, che può includere un token di risposta, possibilmente includendo un SupportedMechanisms
che specifica Solo Kerberos.
Ma sospetto che ti porterà solo "unauthorized"
, perché in primo luogo stava ricadendo su NTLM.
Altri suggerimenti
Sì, puoi. Dai un'occhiata ai documenti di riferimento del progetto SPNEGO HTTP Servlet Filter.
Puoi farlo, (almeno in teoria) sì. IE potrebbe fare cose totalmente strane come l'invio di token Kerberos senza l'incapsulamento appropriato di SPNEGO ASN.1, ma questo è un argomento diverso. In un SPNEGO conforme ( http://tools.ietf.org/html/rfc4178#section -4.1 ) Implementazione che potresti fare.
Se riesci a manipolare il membro mechTypes NegTokenInit per contenere solo Kerberos, il client forza l'invio di Kerberos o non riesce ad autenticarsi.