Ich versuche, eine Anwendung von java7u51 zu java8u40 zu ändern, aber die SSO-Authentifizierung schlägt fehl. Der Client hat sich nicht geändert, er verwendet JNA-Windows-Aufrufe ( Secur32.INSTANCE.InitializeSecurityContext
), aber der Server akzeptiert das Ticket nicht mehr. Der Servercode hat sich nicht geändert, aber er verwendet die Standard-Java-Bibliotheken, die sich anscheinend geändert haben. Der Server läuft unter Linux.
Der Servercode ist unten. Auf meiner Windows-Maschine schreibe ich eine Datei, die das Ticket enthält, damit ich den folgenden Code zum Testen ausführen kann. Ich habe ein sehr hohes Uhrenskigebot, damit ich gegen das Ticket testen kann. Ich habe das Client-Ticket mit java7u51 geschrieben, nur für den Fall, aber das hat nicht geholfen. Das gleiche Ticket funktioniert einwandfrei, wenn ich den folgenden Server-Code in java7 ausführe.
Das Bit, das fehlschlägt, ist, dass isEstablished
false zurückgibt. Es gibt keine hilfreiche Debug-Informationen. isEstablished
gibt false zurück, das bedeutet, dass mehr Runden benötigt werden, aber das war nicht der Fall, und ich denke nicht, dass es so sein sollte.
Weiß jemand einen Grund, dass dies jetzt in Java8 fehlschlagen würde? Es ist nicht nur ein Update 40 Problem, es schlägt mit früheren Versionen von Java 8 fehl.
Danke
%Vor% Update: Falls das hilft. Ich denke, der Client sendet ein SPNEGO-Ticket, denn wenn ich versuche, den Kontext zu zwingen, nur Kerberos (1.2.840.113554.1.2.2) zu akzeptieren, erhalte ich den Fehler failed: No credential found for: 1.3.6.1.5.5.2 usage: Accept
Update 2: Dies ist nicht wirklich die Antwort, aber wenn ich die Art, wie der Windows-Client das Ticket erstellt, funktioniert es. Wenn Sie also anstelle eines SPNEGO-Wrapped-Tickets ein Kerberos-Only-Ticket erstellen, wird es von Java8 akzeptiert. Das Ändern von "Negotiate" zu "Kerberos" unten behebt das Problem.
%Vor%Kerberos / SPNEGO ist eine Abfall-Domain ..
Was mir in den Sinn kommt, unten eine kurze Checkliste, die hoffentlich helfen wird.
Benötigen Sie 256-Bit-Verschlüsselung? Kann gesehen werden (Schlüsseltyp 18 = AES-256):
% JAVA_HOME% \ bin \ klist -e -f -a -k XX.keytab
Wenn ja, haben Sie die unbeschränkten Richtliniendateien
Ist Ihr SPN pingfähig?
Kerberos kann schwierig einzurichten sein. Also viel Glück.