Zum Beispiel:
- Wir betreiben zwei Community-Sites auf zwei Domains (nennen Sie sie
example.com
undexample.net
). - Wir möchten das später auf weitere Domains ausweiten können.
- Wir möchten mehrere Arten der Anmeldung zulassen (OpenID, Facebook, Twitter, Standardbenutzername / -kennwort).
- Wir möchten, dass jemand, der an einer Site angemeldet ist, automatisch an der anderen Site angemeldet wird.
Mit anderen Worten, es ähnelt dem StackExchange-Netzwerk.
Würde dieser Plan in diesem Fall funktionieren?
- Richten Sie
example.com
undexample.net
(und spätere Ergänzungen) als OpenID-vertrauende Parteien ein, die nur die OpenID-Anmeldung akzeptierenid.example.org
. - Richten Sie beim ersten Besuch eine OpenID-Antwortanforderung ein
example.com
undexample.net
führen Sie sie aus. Wenn Sie angemeldet sind, werdenid.example.org
Sie sofort und automatisch bei der Site angemeldet, die Sie besuchen. Sie sollten ein Cookie setzen, wenn Sie nicht angemeldet sind, um sie bei jeder Seitenanforderung zu speichern. - Richten Sie
id.example.org
als OpenID - Provider und Verbraucher. Es sollte auch Facebook und andere Identitätsanbieter konsumieren und den Standardzugriff auf Benutzername / Passwort ermöglichen. (Einem Konto können mehrere Anmeldemethoden zugeordnet werden.) - Ändern Sie beim Abmelden einfach die Authentifizierungstoken in der Datenbank. Der Benutzer hat weiterhin Cookies, diese sind jedoch bedeutungslos. Somit kann der Benutzer von allen Sites gleichzeitig abgemeldet werden. Es können mehrere Authentifizierungstoken gleichzeitig für einen Benutzer gespeichert werden (und sollten für jede Site unterschiedlich sein), sodass sich der Benutzer in einem Browser abmelden und dennoch in einem anderen angemeldet sein kann. Beim Abmelden wird immer für alle Websites abgemeldet.
Das einzige Problem, das ich mit dem oben genannten sehen kann, ist das folgende:
- Jemand besucht
example.com
. Ein "nicht angemeldetes" Cookie wird gesetzt. - Zie geht dann weiter
example.net
. Das Gleiche gilt. - Zie meldet sich dann an und surft weiter
example.net
. - Zie kehrt dann zu zurück
example.com
und wird aufgrund des Cookies "nicht angemeldet" nicht überprüftid.example.org
und ist daher nicht angemeldet. - Sobald zie jedoch auf die Schaltfläche "Anmelden" klickt, wird zie angemeldet.
Ich denke nicht, dass dies ein großes Problem ist.
Insgesamt denke ich, dass es ein ziemlich gutes System ist. Ich möchte nur, dass es überprüft wird. Gibt es Probleme, die ich nicht vorhergesehen habe? Wäre es fehlerhaft oder langsam? StackExchange verwendet eine ganz andere Methode. Ich nehme an, sie haben einen guten Grund dafür?