Ich habe eine asp.net Hauptanwendung, die in asp.net 1.1 geschrieben wird. Unterhalb der Anwendung laufen mehrere 2.0 Apps. Um mich vollständig abzumelden, kann ich mich einfach mit FormsAuthentication.SignOut von der 1.1 App abmelden oder ist das komplizierter?Wie kann ich mich von mehreren asp.net-Anwendungen abmelden?
Antwort
Was Sie suchen, heißt Single Sign On und Single Sign Off. Je nachdem, wie Sie die Anwendungen eingerichtet haben, gibt es Unterschiede. Ich werde versuchen zu klären, wo diese Unterschiede ins Spiel kommen.
Um Single Sign On und Single Sign Off zu implementieren, müssen Sie den Cookie-Namen, den Schutz und die Pfadattribute für alle Anwendungen identisch machen.
<authentication mode="Forms">
<forms name=".cookiename"
loginUrl="~/Login.aspx"
timeout="30"
path="/" />
</authentication>
Als nächstes müssen Sie die Maschine Schlüssel addieren und sie müssen das gleiche zwischen allen Anwendungen sein.
<machineKey validationKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902"
encryptionKey="F9D1A2D3E1D3E2F7B3D9F90FF3965ABDAC304902F8D923AC"
validation="SHA1" />
Verwenden Sie Domänen der zweiten oder dritten Ebene für die Anwendungen? Wenn dies der Fall müssen Sie, indem Sie die Domain auf den Cookie ein bisschen mehr tun:
protected void Login(string userName, string password)
{
System.Web.HttpCookie cookie = FormsAuthentication.GetAuthCookie(userName, False);
cookie.Domain = "domain1.com";
cookie.Expires = DateTime.Now.AddDays(30);
Response.AppendCookie(cookie);
}
Jetzt Single Sign off zu tun, rufen FormsAuthentication.SignOut kann nicht genug sein. Die nächste beste Sache ist, den Cookie Ablauf auf ein vergangenes Datum zu setzen. Dadurch wird sichergestellt, dass der Cookie nicht erneut zur Authentifizierung verwendet wird.
protected void Logout(string userName)
{
System.Web.HttpCookie cookie = FormsAuthentication.GetAuthCookie(userName, False);
cookie.Domain = "domain1.com";
cookie.Expires = DateTime.Now.AddDays(-1);
Response.AppendCookie(cookie);
}
Ich denke, Sie verwenden die gleiche Datenbank für alle Anwendungen. Wenn die Anwendungen eine separate Datenbank für die Registrierung und Authentifizierung verwenden, müssen wir noch mehr tun. Lass es mich wissen, wenn das der Fall ist. Ansonsten sollte dies für Sie funktionieren.
Es könnte einfacher sein, wenn Sie einen zentralen Sitzungsspeicher für alle Ihre Anwendungen haben. Sie können die Sitzung dann an einer Stelle auf null setzen.
Das ist für mich gearbeitet:
Im Logout Ereignisse statt FormsAuthentication.GetAuthCookie Methode verwendet Cookies Sammlung in Request-Objekt wie folgt:
HttpCookie cookie = Request.Cookies.Get(otherSiteCookieName);
cookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookie);
Ofcourse erfordert dies u den Cookie-Namen kennt die Website (s), auf denen der Benutzer abgemeldet werden soll - dies ist jedoch kein Problem, wenn Sie dasselbe Cookie für alle Webanwendungen verwenden.
Ich ziehe web.config
<authentication mode="Forms">
<forms domain=".tv.loc" loginUrl="~/signin" timeout="2880" name="auth" />
</authentication>
- 1. Wie kann ich mich von einer E-Mail abmelden?
- 2. Wie kann ich mich explizit von einer Sammlung abmelden?
- 3. Wie kann ich mich von vk api auf ios abmelden?
- 4. Sollte ich mich von Veranstaltungen abmelden?
- 5. MQtt: Muss ich mich abmelden?
- 6. ReactiveX JS und TypeScript - Wie kann ich mich abmelden?
- 7. Wie kann ich mich abmelden, nachdem ich mich vom Single Sign On Provider authentifiziert habe?
- 8. Wie kann ich mich von der Desktop-Version von GitHub abmelden?
- 9. Muss ich mich von (manuell abonnierten) Ereignissen in asp.net abmelden?
- 10. Wie kann ich mich von einem Google-Konto in ios abmelden?
- 11. Wie kann ich mich von einem Event abmelden, das einen Lambda-Ausdruck verwendet?
- 12. Wie kann ich mich mit der neuen Version von ADALiOS 2.1 abmelden?
- 13. Wie kann ich mich abmelden, wenn ich .htaccess (und .htpasswd) Authentifizierung verwende?
- 14. Wie kann ich mich in der Google Drive iOS API abmelden?
- 15. Visual Studio 2012 lässt mich nicht von TFS abmelden, damit ich neuen Benutzernamen/Passwort eingeben kann
- 16. Wie kann ich einen IOKit.HID-Rückruf "abmelden"?
- 17. Cocoapods: Abmelden von MagicalRecord Abmelden
- 18. Wie kann ich Facebook Chatbot App von einer Seite abmelden?
- 19. Wie kann ich einen Gerätebenutzer von der Rails-Konsole abmelden?
- 20. Laravel Auth :: Abmelden nicht entfernen erinnern mich cookie
- 21. Kann mit Devise nicht abmelden
- 22. Wie kann ich eine Sitzungsvariable am effizientesten abmelden?
- 23. Abmelden von mehreren MembershipUsers, die nicht der aktuelle Benutzer sind?
- 24. Wann sollte ich mich von Observablen in Aktivitäten und Fragmenten abmelden, um negative Konsequenzen zu vermeiden?
- 25. rails-devise - kann nicht abmelden
- 26. Wie kann ich mich bei mehreren Authentifizierungsanbietern anmelden und gleichzeitig dieselbe E-Mail-Adresse teilen?
- 27. gerrit + apache2 kann nicht abmelden
- 28. Wie melde ich mich von deepstream.io ab?
- 29. Wie kann ich einen CRON-Job in AppEngine abmelden?
- 30. Wie kann ich meine App mit REDIS + Node.js abmelden
verwenden „Jetzt zu tun Single-Sign aus, genug kann nicht sein FormsAuthentication.SignOut Aufruf“ Können Sie angeben, warum dies nicht ausreichen würde? –
Abmelden sollte sich nicht auf die andere Domäne auswirken. Wie erreiche ich das? https://stackoverflow.com/questions/45612337/form-authentication-sign-out-should-not-affe-the-other-domain?noredirect=1#45612337 –