Apache und Kerberos SSO mit mehreren vhosts und mehreren SPNs

769
TomS

Ich möchte die einmalige Anmeldung einer Website in meiner Windows-Box durchführen. Ich verwende das Kerberos-Authentifizierungsmodul von Apache. Dies funktioniert ziemlich gut, wenn nur eine Website vorhanden ist.

Dies ist die aktuelle Konfiguration:

.htaccess-Datei:

RewriteEngine On AuthType Kerberos AuthName "Login" KrbAuthRealms MY.DOMAIN.NAME KrbServiceName HTTP/sub1.domain.com@MY.DOMAIN.NAME Krb5Keytab /etc/mykeytab.keytab KrbMethodK5Passwd on KrbAuthoritative on KrbMethodNegotiate on Require valid-user 

Damit dies funktioniert, musste ich eine Keytab-Datei auf meinem Active Directory Controller erstellen, indem der folgende Befehl verwendet wurde:

ktpass -out c:\temp\mykeytab.keytab -princ HTTP/sub1.domain.com@MY.DOMAIN.NAME -mapUser user1 -mapOp set  -pass secret -crypto AES256-SHA1  -pType KRB5_NT_PRINCIPAL 

Wie gesagt, bis zu diesem Punkt funktioniert alles ziemlich gut. Nun zum kniffligen Teil:

Ich möchte eine zweite Website (vhost) auf derselben physischen Maschine haben, die denselben Active Directory-Benutzer (user1) verwendet. Es ist mir egal, ob ich einen anderen Service Principal-Namen (SPN) verwenden muss oder ob ich denselben Namen wie zuvor verwenden kann.

Die neue Site heißt:

sub2.domain.com 

und die .htaccessDatei ist

.htaccess-Datei:

RewriteEngine On AuthType Kerberos AuthName "Login" KrbAuthRealms MY.DOMAIN.NAME KrbServiceName HTTP/sub2.domain.com@MY.DOMAIN.NAME Krb5Keytab /etc/mykeytab2.keytab KrbMethodK5Passwd on KrbAuthoritative on KrbMethodNegotiate on Require valid-user 

Ich habe auch eine neue Keytab-Datei erstellt:

ktpass -out c:\temp\mykeytab2.keytab -princ HTTP/sub2.domain.com@MY.DOMAIN.NAME -mapUser user1 -mapOp add  -pass secret -crypto AES256-SHA1  -pType KRB5_NT_PRINCIPAL -in c:\temp\mykeytab1.keytab 

Diese Keytab-Datei enthält jetzt beide SPNs, die Benutzer1 zugeordnet sind.

Beim Öffnen beider Websites funktioniert nur₁₁ noch ,,22 gibt eine Anmeldeaufforderung aus, dh SSO funktioniert nicht mit,22.

Leider enthalten die apache2-Protokolldateien keine verwandten Informationen, obwohl ich sie verwendet habe LogLevel debug.

In der Zwischenzeit habe ich herausgefunden, dass eines meiner Probleme die Schlüsselversionsnummer (kvno) ist, die sich in beiden Keytabs und auch in der zusammengeführten Keytab-Datei unterscheidet. (Beide Einträge behalten ihre ursprüngliche Kvno, wobei die ältere Kvno ungültig wird, sobald die neuere aktiv ist ...) Gibt es eine Möglichkeit, dieselbe Kvno auf beiden Keytabs (oder auf beiden Einträgen der kombinierten Keytab?) Zu haben. Übrigens lautet die entsprechende Fehlermeldung:

[auth_kerb:error] [pid 8222] [client 10.10.10.10:59840] gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, Key version number for principal in key table is incorrect)

Weiß jemand, warum 2 nicht richtig funktioniert und sub1 nicht funktioniert? ... und was kann ich tun, um die gleichen kvnos zu haben?

Am besten, TomS

0

1 Antwort auf die Frage

0
SorinS

Ihre KVNO (Schlüsselversionsnummer) scheint nicht korrekt zu sein. Wenn Sie AD verwenden, können Sie eine Keytab mit KVNO 255 ​​generieren (AD verwendet KVNO nicht). Sie können Debugging wie hier beschrieben aktivieren: Kerberos-Fehlerbehebung. Wenn Sie den Inhalt der Tracedatei bereitstellen, kann ich möglicherweise mehr erfahren.