Frage

Ist es möglich, Benutzer über Sub-Domains zu authentifizieren, wenn die Authentifizierung bei einer Sub-Domain nimmt anstelle der Standard-Domain?

Zum Beispiel:

Benutzer anmeldet site1.parent.com, und dann müssen wir sie reporting.parent.com senden.

Kann ich sie auf den Berichts Website authentifizieren, obwohl die Log-in bei einer Sub-Domain aufgetreten?

Bisher sind alle von der Forschung, die ich getan habe hat Benutzer in die übergeordneten Domäne anmeldet und dann jede Sub-Domain Zugriff auf die Authentifizierungscookie hat.

War es hilfreich?

Lösung

Sie können das Cookie gesetzt die übergeordnete Domäne zu Authentifizierungszeit zu sein, aber Sie müssen es explizit festgelegt, es auf die volle Domain ausfällt, die Sie auf sind.

Sobald die Auth Cookie korrekt an die übergeordnete Domäne festgelegt ist, dann werden alle Sub-Domains sollten es lesen können.

Andere Tipps

Wenn Sie den Benutzer authentifizieren, setzen Sie die Domäne des Authentifizierungs-Cookie an den Second-Level-Domain, das heißt parent.com. Jede Sub-Domain wird der übergeordneten Domäne die Cookies auf Anfrage erhalten, so Authentifizierung über jede ist möglich, da Sie eine gemeinsame Authentifizierungscookie haben, mit zu arbeiten.

Authentication Code:

System.Web.HttpCookie authcookie = System.Web.Security.FormsAuthentication.GetAuthCookie(UserName, False);
authcookie.Domain = "parent.com";
HttpResponse.AppendCookie(authcookie);
HttpResponse.Redirect(System.Web.Security.FormsAuthentication.GetRedirectUrl(UserName, 
                                                                       False));

Als Randbemerkung, fand ich, dass jro Methode nach der Verwendung der gut 1 gearbeitet, die FormsAuthenication.SignOut () Methode hat nicht funktioniert, wenn sie von einer Sub-Domain außer www / genannt. (Ich nehme an, weil die .domain Eigenschaft entspricht nicht) - Um dies zu umgehen habe ich:

if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
            {
                HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
                myCookie.Domain = "parent.com";
                myCookie.Expires = DateTime.Now.AddDays(-1d);
                Response.Cookies.Add(myCookie);
            }

Neben einem Cookie übergeordnete Domäne einstellen muß auch sicherstellen, dass alle Websites (Apps) haben gleiche validationKey und decryptionKey (), so dass sie alle erkennen jedes Authentifizierungsticket der anderen und Plätzchen. Ziemlich guter Artikel hier http://www.codeproject.com/KB/aspnet/SingleSignon.aspx

Ja, sicher. Möglicherweise müssen Sie Ihre eigene in manchen Phasen rollen, aber es sollte machbar sein.

Eine Idee:., Wie Sie sie über die Grenze umleiten, geben ihnen eine einmalige Token übergeben und sagen dann die Empfangsunterdomäne ihnen (den Benutzer, mit diesem Token von diesem IP) zu erwarten

Jro Antwort funktioniert gut. Aber stellen Sie sicher, dass die webconfig Formularauthentifizierung setting "domain" aktualisieren , Sonst bildet Authentifizierung signout nicht richtig funktionieren. Hier ist die signout Frage kam ich über. Trick hier ist ein haben ‚‘ wie das Präfix als Domain für das Cookie als „.parent.com“ (einen Cookie Inspektoren) festgelegt ist.

<authentication mode="Forms">          
      <forms cookieless="UseCookies" defaultUrl="~/Default" loginUrl="~/user/signin" domain=".parent.com"  name="FormAuthentication" path="/"/>
    </authentication>

2 Dinge zu tun:

  1. MachineKey sollte in allen web.config (Hauptdomain und Sub-Domain (s))
  2. gleich sein
  3. AuthenticationCookie Domain Name sollte gleich.

Folgen Sie der folgende Artikel für mehr Tiefe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top