Matze: SSO over Internet

Servus,

wieder einmal eine spezial Frage von mir.

Kenn jemand von euch einen SSO Mechanisumu, der das einloggen auf mehere Webapplikationen erlaubt?

Hintergrund hierfür ist, das im Intranet mehrere Appserver in Betrtieb sind und hierfür ein SSO realisiert werden soll.

Folgende Lösungen wurden überlegt:

1. Zentralle Sessio wird erzugt, welche eine Anmeldung garantiert und entsprechen gehandhabt wird. Zu deutsch:

Mit der Session Id wird dem Benutzer eine Seite mit wiederum meherern Links für dei jeweilige anwendung geboten. Dort kann er dann per klick einfach jede x beliebige Anendung öffnen ohne sich jedes mal wieder einzuloggen.

Nachteil des ganzen:
1. Wird durch die Relpizierung der Login Daten sowie der Sessions eine nicht unerhebliche Last erzeugt. Sprich die Rechner haben je nach Benutzeranzahl ordentlich daran zu arbeiten die Daten auf alle Server zu replizieren.
2. Wenn der Benutzer das Fenster wieder schlisst muss er sich wieder anmelden.
Das sollte nicht sein.

Der 2. ansatz war, die Login Info den jewiligen Buttons zu übergeben.

Nachteil die Benutzer Login infos werden übers Netz übertrage und könnten abgefragt werden. Wenn auch schwierig stellt es trotzdem ein Sciherheitsloch dar.

Der 3. Versuch war ein Cookie zu implementieren.
Nachteil wenn das Cookie noch aktiv ist und sich ein anderer Benutzer am Rechner befindet, kommt er mit dem anderen Account auf die Anwendungen sollte ebenfalls nicht sein.

wer kennt nun eine gezielt gute Lösung die hier abhilfe schaffen könnte.

Gruss Matze

  1. Hi Matze,

    Kenn jemand von euch einen SSO Mechanisumu, der das einloggen auf mehere Webapplikationen erlaubt?
    Hintergrund hierfür ist, das im Intranet mehrere Appserver in Betrtieb sind und hierfür ein SSO realisiert werden soll.

    hm. Ich sehe da prinzipielle architektonische Probleme - und zwei Möglichkeiten.

    a) Die einzelnen Applikationen haben nichts miteinander zu tun.
    Dann wüßte ich nicht, wieso irgend jemand sicherstellen können sollte, daß deren Datenbestand so geartet ist, daß ein gemeinsames Login überhaupt möglich (und sinnvoll) ist.

    b) Die einzelnen Applikationen gehören zu einer "Familie".
    Dann würde es sich anbieten, die Authentifizierung aus den Applikationen in einen separaten Dienst auszulagern. Hier kenne ich mich nicht aus, würde aber - auf Verdacht - LDAP als etwas ansehen, was einen Anspruch erheben könnte, der in Deine Richtung geht.

    1. Zentralle Sessio wird erzugt, welche eine Anmeldung garantiert und entsprechen gehandhabt wird.

    Das wäre die Richtung, die ich mit b) verfolgen würde.

    1. Wird durch die Relpizierung der Login Daten sowie der Sessions eine nicht unerhebliche Last erzeugt. Sprich die Rechner haben je nach Benutzeranzahl ordentlich daran zu arbeiten die Daten auf alle Server zu replizieren.

    Nicht, wenn die Login-Daten außerhalb der Applikationen verwaltet werden.

    1. Wenn der Benutzer das Fenster wieder schlisst muss er sich wieder anmelden.

    Dann sollte ggf. schon die Anmeldung von diesem Fenster entkoppelt werden.

    Nachteil die Benutzer Login infos werden übers Netz übertrage und könnten abgefragt werden.

    Verschlüsselung?

    Der 3. Versuch war ein Cookie zu implementieren.

    Dsa hilft nur dann, wenn Deine Applikationen zu einem gemeinsamen Domain-Baum gehören.
    Außerdem kannst Du dann Mehrfach-Login nicht sinnvoll verhindern, wenn es keine zentrale Vergabestelle für dieses Cookie gibt.

    Nachteil wenn das Cookie noch aktiv ist und sich ein anderer Benutzer am Rechner befindet, kommt er mit dem anderen Account auf die Anwendungen sollte ebenfalls nicht sein.

    Eben - auch für Logout ist Cookie keine überragende Lösung, weil er explizit gelöscht werden muß. (Dann lieber ein Session-Konzept mit Timeout.)

    Viele Grüße
          Michael

    P.S.: Schöne Frage.

    --
    T'Pol: I apologize if I acted inappropriately.
    V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
    (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
     => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
    Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
    1. Servus,

      genau die ganzen gedanken haben wir uns grundlegend auch gemacht.
      Microsoft hat ja inzwischen SSO teilweise realisiert und bietet dies mit einem MSN Account an.

      Ich frage mich gibt es auch etwas unabhängiges wie das von Microsoft.

      Deine Aussage ist falsch:

      Nicht, wenn die Login-Daten außerhalb der Applikationen verwaltet werden.

      Auch wenn Du ein unabhängiges Session handling anbietest musst Du dem entsprechenden Appserver klar machen, das bestimmter Benutzer angemeldet ist und sich mit folgender Id meldet etc. Genau das verursacht durchaus Probleme.
      Probleme die sich jedoch erst ab einer gewissen grössenordnung ernsthaft auwirken.

      Gruss Matze

      1. Hi Matze,

        Auch wenn Du ein unabhängiges Session handling anbietest musst Du dem entsprechenden Appserver klar machen, das bestimmter Benutzer angemeldet ist und sich mit folgender Id meldet etc. Genau das verursacht durchaus Probleme.

        Warum? Wenn man einen externen (wobei extern nichts darüber aussagt, auf welchem Rechner das läuft) Server hat, der die Benutzerdaten verwaltet, hat man, überall die gleichen Daten. Dass man den verschiedenen Anwendungen beibringen muss, dass sie die Daten über die neue Methode bekommen, ist logisch und bei jeder Lösung, die sich von der bisherigen unterscheidet so. Wenn das zu kompliziert ist, ist das meiner Meinung nach ein Fehler in der Implementierung der Anwendung.
        Welches Problem siehtst du, dass erst ab einer gewissen Größenordung auswirken? Lastprobleme des Servers mit den Daten der Session?

        Grüße Andres Freund

        --
        ss:) zu:) ls:} fo:) de:] va:) ch:| n4:& rl:° br:^ js:( ie:% fl:( mo:|
        1. Richtig,

          in erster Linie Lastprobleme.
          in zweitr Linie ist noch das Problem, dass möglichst jede anwendung auch die Benutzerdaten haben sollten sofern es unterschiedliche Betreiber der Anwendunen sind. Bevor Du jetzt damit kommst, dass die Replizirung nur ein paar Byts sind, denke daran:

          Appserver * User Dann hast du die anzahl, der Daten die versendet werden müssen vom Logon Server. Und ich sehe da schon ein Lastproblem wenn hier einige Benutzer ich spreche mal von 10 000 und mehr gleichzeitig drauf sind. Ebenfalls gehe ich von mehr als 100 anwendungen aus. Vor allem wäre es ja schön, wenn es hierfür soetwas wie eine zenralle Stelle gäbe wie z.B. bei der Telefonnummern vergabe.

          Technisch das zu realisieren ist das kleinste Problem.

          Gruss Matze