Ich glaube, Sie missverstehen, wie Single Sign-On funktioniert.
Betrachten wir Website1 und Website2, die Single Signon verwenden möchten.
Eine Login-Website wird unter identityProvider erstellt. Dies ist der einzige Ort, an dem ein Anmeldebildschirm angezeigt wird.
Wenn der Benutzer website1 besucht und sich zum Anmelden entscheidet website1 sendet den Benutzer an den Anmeldebildschirm von identityProvider. Der Benutzer meldet sich bei identityProvider an, der sein eigenes Anmelde-Cookie für seine Domäne ablegt (und dem Benutzer möglicherweise ermöglicht, seine Authentifizierungsinformationen zu speichern, sodass sie nie wieder aufgefordert werden). Es leitet dann den Browser zurück zu website1 einschließlich eines Token in der Anfrage, die Website1 öffnet, erhält Identitätsinformationen von und führt seine eigenen Login-Bits (Droping seine eigenen Authentifizierung Cookie, die dauert, wie es will).
Dann besucht der Benutzer website2 und wählt die Anmeldung aus. Website2 hüpft den Benutzer zu identityProvider, der bereits weiß, wer der Benutzer ist und, wenn der Benutzer seine Anmeldeinformationen gespeichert hat, automatisch authentifiziert und dann mit einem anderen Token auf Website2 umgeleitet wird, das sich öffnet und dann seine eigenen Login-Bits ausführt.
Es gibt eine Reihe von Sicherheit um ihn herum, Token auf bestimmte Websites zu beschränken, nur Token ermöglicht auf der weißen Liste Websites gesendet werden etc. etc.
So Ihre Bedenken auszuräumen
- Benutzer anmeldet website1 und bewegt sich dann zu website2. Wie wird website2 wissen, dass sich der Benutzer angemeldet hat? Es tut es nicht. website2 muss zuerst Authentifizierungsinformationen von der Single Signon-Site anfordern.
- Das bedeutet, ich muss alle URLs in Website1 marshall, die Website2 nimmt? Nein, es sei denn, Sie machen website1 ebenfalls zum Identitätsanbieter. Selbst dann wäre das schmerzhaft, besser wäre es, wenn website2 den Identity Provider zurückleitet, wenn ein Token notwendig ist.
- Zweitens, wenn der Benutzer website2 für etwa 1 Stunde durchsuchen und dann auf Website1 verschieben. Zu diesem Zeitpunkt hat die Sitzung der website1 abgelaufen, so dass der Benutzer eine Anmeldeseite sehen wird, oder? - Es hängt davon ab, wie Sie Website1 konfigurieren und wie lange der Authentifizierungscookie dauert.
- Dieses Verhalten ist jedoch falsch bei der Funktion für einmaliges Anmelden. Nein, ist es nicht. Einzelanmeldung bedeutet nicht, dass Sie ein Floating-Token erhalten, das zwischen Sites geteilt wird. Jede Website, die das Single Sign-On verwendet, erstellt immer noch ihr eigenes Authentifizierungs-Cookie. Was passiert, wenn der Benutzer zu website1 zurückkehrt, erkennt er einen abgelaufenen Authentifizierungscookie und sendet den Benutzer dann wieder an die Seite für die einmalige Anmeldung, wo er authentifiziert wird (stillschweigend) und ein neuer Token zurück an website1 gesendet wird, wodurch ein neuer erstellt wird Authentifizierungs-Cookie für sich.
Dies ist Single Authentication und nicht Single Sign On. Sie müssen sich N-mal für N Sites mit derselben Authentifizierung anmelden. –
Sie sollten zwischen Authentifizierung und Autorisierung unterscheiden. Sie können einen Benutzer autorisieren, was bedeutet, dass Sie wissen, wer sie sind, aber Sie müssen diesen Benutzer auf einer Ihrer beiden Websites dennoch autorisieren, auf Inhalte zuzugreifen, auf die er auf jeder Website nicht zugreifen kann. Das Token wird ablaufen, kann jedoch normalerweise aktualisiert werden, um den Zugriff zu erhalten. – htm11h