pschneider
I'm new here

Kerberos - Ungültiger GSSheader

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

6 Replies
laqu
I'm new here

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

0 Kudos

Hallo Lars,

ja die Einstellungen sind soweit im IE eingerichtet.

Auf einem FS4 System mit identischer Konfiguration gehts komischerweise.

Grüße

Patrick

0 Kudos
isenberg
I'm new here

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:

websso {
  de.espirit.firstspirit.server.authentication.FSTicketLoginModule sufficient;
  de.espirit.firstspirit.server.authentication.KerberosLoginModule optional;
  de.espirit.firstspirit.server.authentication.LdapLoginModule optional section="LDAP";
  de.espirit.firstspirit.server.authentication.FSUserLoginModule optional;
};

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

0 Kudos

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".

0 Kudos
pschneider
I'm new here

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.

0 Kudos