EnableCrossAppRedirects - Wo wird die domänenübergreifende Funktion dokumentiert?

8

Hier ein interessantes Feature von ASP.NET FormsAuthentication, das in dieser SO-Antwort erläutert wird: Wie übermittelst du eine authentifizierte Sitzung zwischen App-Domains

?

Schnelle Zusammenfassung; Sie können zwei ASP.NET-Websites mit denselben Verschlüsselungsschlüsseln erstellen. WebsiteA kann ein Formsauth-Token erstellen und mit dem Token im Querystring (oder POST-Hauptteil) zu WebsiteB umleiten. Aktivieren Sie EnableCrossAppRedirects in WebsiteB und ASP.NET erkennt das Token und erstellt den formsauth-Cookie. Im Code:

%Vor%

Klingt wie ein großartiges Feature, aber wo ist es dokumentiert? Ich würde ein bisschen unbehaglich fühlen mit einer undokumentierten Funktion.

Wo ich gesucht habe - keine Erwähnung dieser Funktion in irgendeiner MSDN-Referenz. Ich dachte, dass RedirectFromLoginPage eine Weiterleitung wie meinen obigen Code erstellen würde, tut es nicht.

russau 22.08.2011, 21:30
quelle

1 Antwort

14

Nachdem wir uns den Reflektor angesehen haben, gibt es ein (undokumentiertes) Feature der Formularauthentifizierung. Wenn EnableCrossAppRedirects aktiviert ist, wird .NET zusätzlich zur Suche nach dem Authentifizierungs-Cookie versuchen, den Formular-Authentifizierungs- "Cookie" entweder aus dem Formularbeitrag oder aus der Abfragezeichenfolge zu extrahieren. Dieser Code ist in die FormsAuthentication -Klasse in der ExtractTicketFromCookie -Methode eingebettet, wo eindeutig festgestellt werden kann, dass der Authentifizierungscookie in den Anforderungsdaten gesucht wird.

%Vor%

Wenn Sie also EnableCrossAppRedirects für beide Anwendungen aktivieren, ist die erste Anwendung berechtigt, auf die externe Site umzuleiten, und die zweite Anwendung liest automatisch den Authentifizierungscookie aus der Anfrage ein. Sie müssen es nur so entwickeln, dass die Return-Login-URL die Cookie-Daten entweder veröffentlicht oder im Querystring sendet. Sie müssen außerdem sicherstellen, dass entweder die Maschinenschlüssel synchronisiert sind oder dass der Cookie mit dem Schlüssel der externen App (von der ersten App) verschlüsselt wurde. Es sieht standardmäßig so aus, dass .NET den verschlüsselten Authentifizierungscookie in der Querystring für Sie sendet und Ihre Maschinentasten synchron sind (siehe MSDN-Zitat unten).

Hier finden Sie weitere Informationen zu MSDN .

  

Wenn die Eigenschaft CookiesSupported wahr ist und entweder ReturnUrl   Variable ist innerhalb der aktuellen Anwendung oder der   EnableCrossAppRedirects -Eigenschaft ist wahr, dann die   Die RedirectFromLoginPage-Methode gibt ein Authentifizierungsticket aus und   platziert es im Standard-Cookie mithilfe der SetAuthCookie-Methode.

     

Wenn CookiesSupported falsch ist und der Umleitungsweg zu einer URL in der   aktuelle Anwendung wird das Ticket als Teil der Weiterleitungs-URL ausgegeben.    Wenn Cookies unterstützt Falsch ist, ist EnableCrossAppRedirects wahr, und der   Weiterleitungs-URL bezieht sich nicht auf eine Seite innerhalb der aktuellen Anwendung,   Die RedirectFromLoginPage-Methode gibt ein Authentifizierungsticket aus und   platziert es in der QueryString-Eigenschaft .

Es gibt eine große Warnung vor den Auswirkungen auf die Sicherheit. EnableCrossAppRedirects ist eine Sicherheitseinstellung, die verhindert, dass ASP.NET-Anmeldesteuerelemente auf eine externe Rückgabe-URL (eine andere Webanwendung) umgeleitet werden. Wenn diese Einstellung aktiviert ist, kann sie in einigen Angriffsformen ausgenutzt werden - ein Benutzer wird zur offiziellen Anmeldeseite gesendet, aber bei der Anmeldung wird er an eine andere Anwendung weitergeleitet, von der er glaubt, dass sie die gleiche ist. Aus diesem Grund ist es standardmäßig deaktiviert.

Eine Möglichkeit, dies zu verringern, wenn Sie die Funktion aktivieren, ist wie folgt:

  

Um die Sicherheit bei der Verwendung von anwendungsübergreifenden Weiterleitungen zu verbessern, sollten Sie Folgendes tun   Überschreiben Sie die RedirectFromLoginPage-Methode, um Redirects nur zuzulassen   genehmigte Websites.

Sie müssen außerdem sicherstellen, dass die Redirect-Anfrage über SSL zugestellt wird, um den "Cookie" während der Übertragung zu schützen, da jeder abfangende Benutzer die Kontrolle über das Konto erlangen könnte.

    
TheCodeKing 30.08.2011, 15:35
quelle