Single Sign On über Websites hinweg

7

Ich habe drei verschiedene Websites, die ich auf drei verschiedenen Top-Level-Domains betreibe. Ich möchte, dass Benutzer sich bei einem von ihnen anmelden und dann automatisch bei allen drei angemeldet werden. Als zusätzliche Anforderung möchte ich, dass der Benutzer mein eigenes Anmeldesystem oder ein System eines Drittanbieters seiner Wahl (z. B. Facebook) verwenden kann.

Kann mich jemand darauf hinweisen, die Dokumentation zu einem "Standard" -Verfahren zu löschen? Alles, was ich gelesen habe, deutet darauf hin, dass der Versuch, meine eigene Lösung zu schreiben, eine schlechte Idee wäre. SAML scheint eine mögliche Richtung zu sein, also habe ich versucht, mit SimpleSamlPhp zu spielen , aber ich konnte mich nicht darum kümmern (bessere Beispiele als das, was sie in ihrer Dokumentation haben, könnten helfen).

Was ist der beste Weg, um dies zu erreichen?

Matthew
quelle
Verwenden Sie auf diesen Websites Content-Management-Systeme? Wenn Sie dies tun, sollten Sie in der Lage sein, dies durch clevere SQL-Freigabe und gespeicherte Cookies-Anmeldungen zu tun. Ähnlich wie Google Sie mit einem Cookie auf allen Websites anmeldet.
Simon Hayter
Wir können unsere Datenbank sicherlich zwischen Websites teilen, aber meine Frage ist, wie Google das Richtige tut, wenn Sie sich bei allen Diensten anmelden.
Matthew
Ich würde mir vorstellen, dass es eine Möglichkeit gibt, die Benutzernamenprofile in der Datenbank freizugeben und dann die Cookies so einzustellen, dass sie auf drei Websites funktionieren. Sehen Sie sich eines der von Ihrer Website verwendeten Cookies an und prüfen Sie, ob Sie es so anpassen können, dass es funktioniert auf 3 Websites. Dies ist nicht mein stärkstes Feld, aber es sollte möglich sein.
Simon Hayter
Denken Sie, ich habe gefunden, wonach Sie suchen. Überprüfen Sie meine Antwort in 2 Minuten
Simon Hayter

Antworten:

2

Ich würde vorschlagen, Open Id für die einmalige Anmeldung zu verwenden. Es wird am häufigsten unterstützt.

Benutzer können sich mit ihren Google- oder Yahoo-Konten anmelden. Diese Seite enthält eine Liste der größten Account-Anbieter für offene IDs. Sie können auch Ihren eigenen Open ID-Anbieter erstellen, wie dies bei StackExchange der Fall ist.

Es gibt zwei Nachteile:

  • Facebook unterstützt es nicht. Wenn Sie möchten, dass sich Benutzer auch über Facebook anmelden, müssen Sie auch Facebook Single Sign On implementieren.
  • Sie können die Benutzer nicht automatisch bei Ihren drei Websites anmelden. Ihre Benutzer müssen jede Site separat genehmigen. Die Genehmigung muss nur einmal pro Standort erfolgen. Sobald sie die Anmeldung pro Site genehmigt haben, können Sie sie auf die Anmeldeseite umleiten und sie werden sofort mit Anmeldeinformationen zurückgesendet. Dies entspricht der Arbeit der StackExchange-Sites, bei denen Sie sich nur einmal anmelden, jedoch jede Stack-Site separat genehmigen müssen.

Ich beschränke Benutzer, die sich auf meiner Website anmelden, darauf, nur ihr Google-Konto zu verwenden. Ich habe festgestellt, dass weniger Nutzer durch die Anmeldung bei Google ausgeschaltet werden als durch die Auswahllähmung, wenn sie durch Optionen dargestellt werden. Wenn ich auf meiner Seite einen einzigen Anmeldelink habe, der sie nur zu Google führt, wird der Anmeldefluss für meine Nutzer viel einfacher und einfacher.

Stephen Ostermiller
quelle
Ihr zweiter Nachteil ist genau das, was ich vermeiden möchte. Ich konnte sehen, dass unsere Benutzer durch den zusätzlichen Schritt verwirrt / verärgert wurden (obwohl es nur einmal ist).
Matthew
Es wäre theoretisch möglich, einen offenen ID-Anbieter zu erstellen, für den dieser Bestätigungsschritt für Ihre drei spezifischen Sites nicht erforderlich ist. Ich konnte jedoch keine mit dieser Funktion finden.
Stephen Ostermiller
2

Eine andere Möglichkeit zum Einrichten von SSO ist die Verwendung eines zentralen Authentifizierungsdienstes , der ursprünglich aus Yale stammt.

Dies kann die automatische Anmeldung bei einer Site ohne einen Autorisierungsschritt an jeder Site ermöglichen. Ihre Benutzer würden sich einmal beim CAS-Server anmelden und bei ihrem Besuch auf allen Websites authentifiziert werden.

Für die meisten Sprachen gibt es vorab geschriebene Module, und mehrere Content-Management-Systeme können CAS für SSO verwenden.

Iain Hallam
quelle
1

Ein Freund von mir hat eine Firma namens CryptoKey gegründet, die den Ansatz verfolgt, persönliche Sicherheitszertifikate für Benutzer zu generieren, die in den meisten Webbrowsern installiert werden können. Ich habe es getestet und es ist kein Bestätigungsschritt erforderlich, damit eine Website Ihre Identität sehen und überprüfen kann. Nach der Installation ihrer Authentifizierung werden Benutzer einfach bei allen Ihren Websites angemeldet.

Der Nachteil dieses Systems besteht darin, dass es für Benutzer viel schwieriger ist, ihr Zertifikat zu installieren, als nur ein Kennwort zu erstellen.

Stephen Ostermiller
quelle
0

Sie sollten in der Lage sein, Anmeldungen für mehrere Domänen freizugeben, indem Sie:

  1. Freigeben der Datenbank (nur Benutzerdetails)
  2. Cookies teilen

Um dies auf diese Weise zu tun, sind viel Codierung und viel zu viele Variablen erforderlich, um diesen Code genau verwenden zu können. Sie sollten jedoch in der Lage sein, ein wenig über das Teilen von Cookies über mehrere Domänen hinweg zu recherchieren, die auf verschiedenen Servern gehostet werden . Es gibt tatsächlich viele Websites mit detaillierten Informationen darüber, wie dies erreicht werden kann. Dies scheint Ihre beste Route zu sein, wenn Sie Bestätigungen usw. vermeiden möchten.

Simon Hayter
quelle
Die Verwendung von Subdomains derselben Root-Domain würde dies vereinfachen, aber leider gehören zu meinen Anforderungen die Verwendung vollständig separater Domains.
Matthew