10

Ich kenne das Sicherheitsrisiko zugeordnet und haben es mit dem Geschäft, aber sie wollen ihre 5 Domänen haben, die Login-Cookie zu teilen.Cross-Domain-Cookies mit FormsAuthentication

Wir verwenden und haben keine Pläne, ASP.Net-Mitgliedschaft und Profile zu beenden. Ist das möglich? Ein Hack würde sogar sehr geschätzt werden.

Antwort

9

Es ist nicht mit out of the box ASP.NET möglich.

Die formularbasierte Authentifizierung basiert auf einem Cookie und Cookies können nur für eine bestimmte Domäne festgelegt werden.

Wenn Sie eine echte domänenübergreifende (nicht untergeordnete Domänen) Authentifizierung wünschen, benötigen Sie eine Single Sign-On-Lösung.

Ich habe meine eigenen gerollt und es ist relativ einfach. Das Grundprinzip ist, dass Sie eine Master-Domain haben, die Ihr Authentifizierungs-Cookie (Ticket) enthält. Sie leiten dann von allen anderen Domänen zu dieser Domäne um. Es ist nicht wirklich schön, aber Ereignis Microsoft Passport hat so funktioniert.

Sie viele Beispiele im Netz finden kann, an diesen beiden Verbindungen einen Blick:

Authentication cookies

Cross domain authentication

+0

An diesem zweiten Link, wenn Sie Probleme haben, die Demo, weil „im angegebenen Status Schlüssel ist nicht gültig für die Anwendung“ ausgeführt wird, versuchen Sie dies: Stellen Sie sicher, die Schlüsseldatei wird tatsächlich geschaffen, wo du denkst, dass es ist. Es scheint, dass der Beispielcode eine Schlüsseldatei enthält, aber natürlich möchten wir unsere eigenen erstellen. Um die Schlüsseldatei (tripleDES.key) zu speichern, musste ich zuerst die Konfiguration im Enterprise Library Configuration Tool speichern (Rechtsklick, Speichern). Sobald ich die Konfiguration gespeichert habe, wurde meine Schlüsseldatei sofort gespeichert und ich kann die Demo-App ausführen. – northben

2

Nicht nur mit ASP.Net dies nicht möglich ist, aber nicht überhaupt. Cookies sind immer Domain-spezifisch - kein kommerzieller Browser funktioniert anders. Dies ist beabsichtigt und sehr notwendig, um einen weit verbreiteten Missbrauch von Cookies zu verhindern. Muerte wies Sie in die richtige Richtung (Single Sign-On).

4

Sie können Setup alle diese Domänen als Sub-Domains für Ihr Unternehmen:

www.company.com 
shop.company.com 
sales.company.com 
research.company.com 
.. 

dann werden Sie in der Lage sein Cookie an den übergeordneten Domäne zu setzen und es wird für alle Sub-Domains sichtbar sein.

var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
cookie.Domain = ".company.com"; 
Repsonse.Cookies.Add(cookie); 

Grüße, Max Chernyshov http://prontocoder.com