2

Ich habe eine ASP.NET-Anwendung. Neben lokalen Benutzern, die direkt auf die Anwendung zugreifen, möchte ich sie über einen Reverseproxy (der auf einem anderen Computer in der DMZ ausgeführt wird) externen Benutzern zugänglich machen.ASP.NET-Formularauthentifizierung funktioniert nicht mit Reverseproxy

Zum Beispiel sagen interne Benutzer die URL http://intranet1/myApplication/default.aspx, extern Benutzer können die URL http://www.mycompany.com/externalApplication/default.aspx

verwenden Dies ist ziemlich einfach mit URL rerwiting einzurichten, aber es gibt ein Problem, wenn Formularauthentifizierung aktiviert ist. Wenn ein externer Benutzer die URL-Site aufruft, versucht forms auth, sie automatisch an die Anmeldeseite zu senden, die sie an die relative URL/myApplication/LoginPage.aspx weiterleitet. Soweit es die Web-App betrifft, befindet sich der Anwendungsstamm unter/myApplication not/externalApplication. Natürlich versteht der externe Benutzer, der durch die Firewall hereinkommt, diese URL nicht, so dass die Anfrage mit einem 404

keine vernünftige Lösung gibt.

Antwort

2

Sie sollten nicht zu "/myApplication/LoginPage.aspx" umleiten, sondern zu "~/Login.aspx", damit es korrekt zugeordnet wird, hängt davon ab, auf welche URL der Benutzer trifft.

<authentication mode="Forms"> 
    <forms loginUrl="~/Login.aspx" timeout="2880" /> 
</authentication> 
+1

Es würde auch nicht schaden, die Anwendung als den gleichen Ordner auf beiden Servern definiert zu haben. –

+0

Danke Alexanderb, Das ist genau das, was ich gesucht habe. Ich hatte komplett vergessen, dass die URL in der web.config konfigurierbar war. – Andy

+0

Hmm, ich habe schon wieder darüber nachgedacht. Sicherlich unterscheidet sich Ihr Vorschlag nicht von meiner ursprünglichen Konfiguration (loginurl = "/ MyApplication/default.aspx"), da das ~ in/MyApplication konvertiert wird, bevor die Weiterleitung an den Browser gesendet wird – Andy