Search the FirstSpirit Knowledge Base
Hallo,
ich versuche mit FS5 (5.0.210) und Tomcat 7 die Kerberos Authentifizierung einzurichten.
Tomcat verweist, wie im Admin Handbuch auf die fs-jaas.conf und krb5.conf.
Sobald ich mit dem Browser darauf zugreife, erhalte ich folgenden Logeintrag:
[2013-11-26 15:29:13,822] http-apr-80-exec-8 de.espirit.firstspirit.server.authentication.KerberosLoginModule ERROR - login failed! Defective token detected (Mechanism level: GSSHeader did not find the right tag)
Hier die Konfigurationsdateien:
fs-jaas.conf
websso {
de.espirit.firstspirit.server.authentication.KerberosLoginModule optional useFullPrincipal="false" userAgents=".*(MSIE|Windows.*Firefox|Konqueror|Safari|Iceweasel|Linux.*Shiretoko|Linux.*Firefox|Mac OS.*Firefox).*";
de.espirit.firstspirit.server.authentication.FSTicketLoginModule sufficient;
de.espirit.firstspirit.server.authentication.LdapLoginModule optional section="LDAP";
de.espirit.firstspirit.server.authentication.FSUserLoginModule optional;
};
/* required additional configuration for KerberosLoginModule: */
com.sun.security.jgss.accept {
com.sun.security.auth.module.Krb5LoginModule required
principal="HTTP/server.example.com@EXAMPLE.COM
keyTab="E:/srv/krb/server-rc4.keytab"
useKeyTab="true"
storeKey="true"
isInitiator="false"
doNotPrompt="true"
debug="true";
};
Tomcat Startparamter:
-Djava.security.auth.login.config=E:\srv\FirstSpirit5\conf\fs-jaas.conf
-Djava.security.krb5.conf=E:\srv\krb\krb5.conf
KRB5.conf
[libdefaults]
default_realm = EXAMPLE.COM <http://EXAMPLE.COM>
[domain_realm]
.EXAMPLE.COM = EXAMPLE.COM <http://EXAMPLE.COM>
EXAMPLE.COM <http://EXAMPLE.COM> = EXAMPLE.COM <http://EXAMPLE.COM>
[realms]
EXAMPLE.COM <http://EXAMPLE.COM> = {
kdc = domaincontroller1
kdc = server
default_domain = EXAMPLE.COM <http://EXAMPLE.COM>
}
Grüße
Patrick
hast Du das hier im IE gemacht?
Internet Explorer (Windows):
In den Internetoptionen bei "vertrauenswürdige Sites" folgende Einträge einfügen:
https://*.mydomain.net bzw. http://*.mydomain.net, falls nur HTTP
verwendet wird.
Dann bei den Internetoptionen unter "Erweitert" im Bereich
Sicherheit "Integrierte Windows-Authentifizierung" aktivieren.
Folgende Konfiguration ist eventuell zusätzlich notwendig:
In den Internetoptionen bei Sicherheit in der Zone
"Vertrauenswürdige Sites" "Stufe anpassen" wählen und im Bereich
Benutzerauthentifizierung "Automatische Anmeldung mit aktuellem Benutzernamen
und Kennwort" aktivieren.
Danach hats bei mir gestern funktioniert...
Gruß
Lars
Hallo Lars,
ja die Einstellungen sind soweit im IE eingerichtet.
Auf einem FS4 System mit identischer Konfiguration gehts komischerweise.
Grüße
Patrick
Hallo Patrick,
diese Fehlermeldung deutet normalerweise auf ein syntaktisch fehlerhaftes Ticket hin. Das Ticket wurde also zwischen Browser und FirstSpirit-Kerberos-Servlet verändert. Der häufigste Grund dafür sind sehr große Tickets, die nicht in die im Webserver konfigurierte maximale Request-Länge passen. Ein Ticket kann nämlich mehrere kByte groß werden, weil einige Windows-Versionen zusätzlich alle Gruppeninformationen des Benutzers ins Ticket kodieren.
Siehe Dazu ADMI50DE_FirstSpirit_AdminDocumentation.pdf Kapitel 4.3.4.5 Kerberos-Ticket (Integrierte Windows-Anmeldung):
Im Tomcat HTTP-Connector folgenden Parameter setzen:
maxHttpHeaderSize="65536"
Und im Tomcat AJP-Connector, falls verwendet, folgenden Parameter eintragen:
packetSize="65536"
Außerdem beachten, dass das FSTicketLoginModule immer an erste Stelle in der fs-jaas.conf eingetragen werden muss, denn sonste erfolgt eine unnötige zusätzliche Authentifizierung bei jedem Request. Also folgende Reihenfolge verwenden:
Außerdem noch im catalina.out, also stdout/stderr des Tomcat nachsehen, denn dorthin schreibt die Oracle/Sun-Java-Kerberos-Implementierung bei Angabe von "debug" in fs-jaas.conf.
Grüße,
Holger
Hallo Holger,
die Einstellungen sind im Tomcat eingetragen, die fs-jaas.conf habe ich diesbezüglich nochmals angepasst.
Leider kommt der Fehler weiterhin (nach Neustart der beiden Dienste - tomcat und fs5).
Das steht im stderr.log von Tomcat, Fehler GSSHeader bleibt gleich.
Debug is true storeKey true useTicketCache false useKeyTab true doNotPrompt false ticketCache is null isInitiator false KeyTab is E:/srv/krb/example-rc4.keytab refreshKrb5Config is false principal is HTTP/server.example.com@EXAMPLE.COM tryFirstPass is false useFirstPass is false storePass is false clearPass is false
principal is HTTP/server.example.com@EXAMPLE.COM
Will use keytab
>>> KeyTabInputStream, readName(): EXAMPLE.COM
>>> KeyTabInputStream, readName(): HTTP
>>> KeyTabInputStream, readName(): server.example.com
>>> KeyTab: load() entry length: 69; type: 23
Config name: E:\srv\krb\krb5.conf
Added key: 23version: 5
Ordering keys wrt default_tkt_enctypes list
Using builtin default etypes for default_tkt_enctypes
default etypes for default_tkt_enctypes: 17 16 23 1 3.
Commit Succeeded
Found KeyTab
Found KerberosKey for HTTP/server.example.com@EXAMPLE.COM
Auf Server-Seite sieht also alles gut aus. Dann bitte für die FirstSpirit-Webapps den Loglevel auf DEBUG stellen, denn normalerweise müsste unser KerberosLoginModule dann einige Zeilen nach tomcat/log/firstspirit.log schreiben. Zum Ändern des Loglevel tomcat/lib/log4g.properties anpassen, siehe FirstSpirit-Adminhandbuch für eine Beispieldatei.
Auf Client-Seite überprüfen, ob tatsächlich vom Browser ein Kerberos-Ticket bei Zugriff auf die FirstSpirit-Startseite angefordert und erhalten wird. Dazu "klist" im cmd.exe unter Windows 7 oder Terminal.app unter Mac OS oder Shell unter Linux aufrufen und überprüfen, ob ein Eintrag mit dem Hostnamen der FirstSpirit-URL vorliegt. Unter Windows können alle Kerberos-Tickets durch Sperren des Bildschirms und anschliessender Passworteingabe gelöscht und neu erstellt werden. Unter Mac OS und Klinux über "kdestroy; kinit benutzername@REALM".
Das Problem lag an der SPN Zuordnung (Dank an Hr. Pacyna für die Hilfe).
Für den gleichen Server waren mehrere Accounts zugeordnet. Nach Bereinigung der SPN klappt SSO einwandfrei.