Single-Sign-On (SSO) bedeutet, dass mit einer einmaligen Anmeldung am Rechner alle weiteren Dienste, auf die der Benutzer Zugriff haben soll, automatisch ohne weitere Anmeldung freigeschaltet sind. Andererseits sollen nur die Dienste genutzt werden können, für die auch der Zugriff freigeschaltet wurde. Damit verbunden ist ein aussagekräftiges Logfile, welches eben auch das login enthält.

siehe auch PAM, Kerberos, UCSC Identity Management Project, Build and implement a single sign-on solution (developerWorks)

Standardlösung

Um das Prinzip von SSO zu verstehen, soll das folgende Beispiel zur Veranschaulichung dienen. In einem Netz stehen auf jeweils eigener Hardware ein Samba-, ein Web-, ein Proxy- und ein Mailserver zur Verfügung. Jeder dieses Dienste kann auf eine Datenbank zugreifen, wo die User verzeichnet sind, die diesen Dienst nutzen können (oder auch nicht). Das kann natürlich auch die gleiche Datenbank sein, üblicherweise die shadow oder eine modifizierte Kopie der shadow, es kann aber auch wie im Fall von Samba eine völlig andere Datei/Datenbank (smbpasswd) sein.
Es liegt natürlich nahe, den Verwaltungsaufwand zu minimieren, indem man diese Daten in einer Datenbank bereitstellt, üblicherweise durch einen LDAP-Server. Damit hätten wir jetzt die Situation, das ich mich an jeden Server anmelde und diese holen die Zugriffsberechtigungen aus dieser Datenbank. Als Vorteil ergibt sich, das nur eine Datenbank gepflegt wird, insbesondere brauchen für die verschiedenen Dienste nicht verschiedene Passwörter gepflegt zu werden. diese Situation wird häufig schon single-sign-on genannt, ist es aber nicht.
Trotzdem ist die Situation noch so, das ich mich zum surfen an Squid anmelden muß, zum Mail abholen muß ich wieder mein Passwort eingeben usw. - wenn also 'jemand' meine Anmeldung beim ersten Mal überprüft hat, dann könnte dieser jemand mich doch bei den Diensten anmelden. Dieser 'jemand', also der Anmeldeserver, muß natürlich wissen, wo ich mich überhaupt anmelden darf.

Das wird üblicherweise so realisiert: als Anmeldeserver fungiert standardmäßig ein Kerberosserver. An dem erfolgt die eigentliche Anmeldung. Dieser fragt beim LDAP-Server nach, welche Dienste überhaupt genutzt werden können und für jeden dieser freigegebenen Dienste wird eine Eintrittskarte (Ticket) erstellt. Wenn man nun surfen will, also den Proxy aufruft, dann übernimmt jetzt der Kerberosserver die Anmeldung, wenn ein entsprechendes Ticket vorliegt. Ebenso für die anderen Dienste.

Allerdings ergibt sich folgendes Problem. Der Proxy 'liefert' normalerweise das Anmeldefenster an den Client, der diesen Proxy aufruft (Browser). Jetzt muß aber die Konversation zwischen dem Proxy und dem Kerberosserver erfolgen, das heißt, jeder der betreffenden Dienste muß kerberisiert sein. Beispielsweise liegt m.E. Squid noch nicht in einer kerberisierten Form vor.

eine Lösung nach Dieter Klünter

Benötigte Dienste:

Jeder Anwender hat einen Eintrag im Verzeichnisdienst mit Passwort und dem zusätzlichen Attribut krb5PrinzipalName.

Heimdal KDC kann den Verzeichnisdienst als Database nutzen.

Alle Dienste müssen entweder durch SASL oder PAM authentifizieren können.

Web SSO

-- HansDietrichKirmse

Links


KategorieServer

SingleSignOn (zuletzt geändert am 2007-12-23 22:49:43 durch localhost)