2009-01-28 5 views
6

Die beiden WWW-Authenticate Ergänzungen macht Microsoft Nutzungs, dass ich derzeit sind uns bewusst binKann ich Clients anzeigen, dass SPNEGO unterstützt wird, aber NTLM nicht für HTTP-Anforderungen?

  • NTLM
  • Verhandeln

Wenn unten vom Server Verhandeln gesendet wird, basierend auf einer Reihe von Bedingungen Kerberos wird

  • Intranetzone
  • Zugriff auf die verwendet werden, Server einen Hostnamen anstatt IP
  • integrierte Windows-Authentifizierung in IE aktiviert ist, wird der Host in Firefox
  • ist vertraut
  • Der Server nicht lokal auf den Browser
  • Der Kerberos-System des Kunden zu einem Domänencontroller authentifiziert wird

Dann wird Kerberos zwischen dem Server und dem Client versucht, wenn etwas darüber nicht erfüllt ist, wird NTLM versucht.

Meine Frage ist, gibt es eine Möglichkeit für den Server anzugeben, dass NTLM nicht gesendet werden soll? Ich handle derzeit damit, indem ich die Anfrage in der Sitzung protokolliere, und wenn eine NTLM-Nachricht empfangen wird, deaktiviert sie Kerberos und WWW-Authenticate für den Rest der Lebensdauer dieser Sitzungen.

+0

Deaktivieren Sie NTLM aufgrund von Delegationsproblemen? –

+0

Nein, es ist einfach etwas, das ich momentan im Tomcat JAAS-Plugin, das ich gemacht habe, nicht unterstütze. Es unterstützt nur Kerberos/SPNEGO. –

Antwort

2

Der ursprüngliche WWW-Authenticate Header gibt nur negotiate an. Es kann nichts mehr sagen, wie "keine NTLM".

Ich denke, es möglich ist, auf die erste Authentifizieren zu reagieren: {Base64 NTLMSSP} Header durch den Client gesendet mit 401 unauthorized und einem zweiten Negotiate Header, der eine Antwort Token enthalten kann, möglicherweise ein SupportedMechanisms enthält, die nur Kerberos angibt.

Aber ich vermute, dass Sie nur "unauthorized" bekommen, weil es in erster Linie zurück zu NTLM fiel.

+0

Ich werde das untersuchen. Die meisten Fälle, in denen Kerberos/SPNEGO heruntergestuft wurde, habe ich entweder gesehen, weil Kerberos auf diesem Windows-Desktop versagt oder die Umgebung falsch konfiguriert hat. Es gibt einige sehr willkürliche und nicht dokumentierte Anforderungen IE muss Kerberos über NTLM tun. –

+0

@ScottMarkwell Ich habe das gleiche bemerkt, aber es wäre nett, den IE dazu zu bringen, nach Anmeldeinformationen zu fragen und vielleicht sogar direkt ein Serviceticket zu erhalten, anstatt die NTLM-Fallback-Route herunterzufahren. – davenpcj

1

Sie können das tun, (zumindest in der Theorie) ja. IE kann völlig komische Dinge tun, wie das Senden von Kerberos-Tokens ohne die entsprechende SPNEGO ASN.1-Kapselung, aber das ist ein anderes Thema. In einer konformen SPNEGO (http://tools.ietf.org/html/rfc4178#section-4.1) Implementierung könnten Sie das tun.

Wenn Sie das Member NegTokenInit mechTypes so manipulieren können, dass es nur Kerberos enthält, wird der Client gezwungen, Kerberos zu senden oder die Authentifizierung fehlzuschlagen.

+0

Das allgemeine Problem ist, dass Micorsoft SPNEGO/GSS-API mit ihren vorhandenen NTLM-Funktionalität gemischt. Sie sind also nicht für eine tatsächliche Verhandlung garantiert. –

3

Ja können Sie. Sehen Sie sich die reference docs des SPNEGO HTTP Servlet Filter-Projekts an.

+0

Ich mache mir eigentlich nur Gedanken über die Protokollebene des HTTP/WWW-Authenticate Negotiate. Ich habe tatsächlich meine eigene Implementierung gerollt. Vielen Dank für die Verbindung zu diesem Projekt, da ich mir nicht bewusst war, dass jemand auch eine Lösung erstellt hat (sieht so aus, als wäre es vor 2 Wochen auf Sourceforge gekommen) –

Verwandte Themen