KrbException: Anmeldeinformationen konnten nicht erstellt werden. (63) - Keine Service-Anmeldeinformationen

KrbException: Anmeldeinformationen konnten nicht erstellt werden. (63) - Keine Service-Anmeldeinformationen

Ich arbeite daran, Tomcat 8.0.35 auf Ubuntu 16.04 mit Oracle Java 1.8.0_91-b14 (nicht ) so einzurichten, openjdkdass bei der Authentifizierung gegenüber unserer Microsoft SQL-Datenbank die Kerberos-Authentifizierung verwendet wird. Das Problem, auf das ich stoße, ist, dass nach der Ausführung kinitals entsprechender Benutzer mit den entsprechenden Schaltern:

sudo -u tomcat8 kinit -k -t /etc/tomcat8/tomcat8.keytab HTTP/[email protected]

Ich erhalte diesen Fehler im Localhost-Protokoll von Tomcat:

Caused by: GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)
Caused by: KrbException: Fail to create credential. (63) - No service creds

Wenn ich laufe

sudo -u tomcat8 klist

Ich erhalte die erwartete Antwort:

root@linux-test2:/home/tbourne# sudo -u tomcat8 klist
Ticket cache: FILE:/tmp/krb5cc_111
Default principal: HTTP/[email protected]

Valid starting       Expires              Service principal
06/23/2016 14:33:10  06/24/2016 00:33:10  krbtgt/[email protected]
        renew until 06/24/2016 14:33:07

Wenn ich beim Start von Tomcat Pakete erfasse, sehe ich, dass ein Dienst-/Instanzname übergeben wird krbtgt/OUR.DOMAIN.LOCAL. Ich hatte erwartet, dass es sich dabei um den oben erwähnten Standard-Principal handelt. Wenn ich die serverSpnOption in der Datenbankverbindungszeichenfolge einstelle, erhalte ich die oben genannten Ergebnisse.

Wenn ich die Option entferne serverSpn, wird ein anderer Principal name verwendet . Leider kann ich diesen Namen nicht verwenden, da ich für jede unserer Tomcat-Instanzen eindeutige Logins (und damit eindeutige SPNs) benötige.MSSQLSvc/[email protected]

Unsere Datenbankverbindungszeichenfolge sieht folgendermaßen aus:

property.db.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
property.db.jdbcUrl=jdbc:sqlserver://sql-server.our.domain.local:1434;databaseName=DBAUTH2;integratedSecurity=true;authenticationScheme=JavaKerberos;serverSpn="HTTP/[email protected]"

Ich habe den Microsoft JDBC-Treiber Version 4.2 heruntergeladen und Tomcat verwendet ihn.

Ich verstehe nicht, warum Tomcat bei der Authentifizierung gegenüber der Datenbank nicht den richtigen Hauptnamen sendet. Für jede Aufklärung wäre ich sehr dankbar.

Ich kann die krb5.inifür Tomcat, die krb5.conf, die jaas.confund alle anderen Konfigurationen posten, wenn sie hilfreich wären.

Antwort1

Die Kerberos-Konfigurationsdatei ( /etc/krb5.conf) ist case-sensitiv und ändert den default_realmNamen in Kleinbuchstabenwird dieses Problem verursachen.

verwandte Informationen