2

J'ai une application ASP.NET. Par exemple, si les utilisateurs locaux accèdent directement à l'application, je souhaite l'exposer à des utilisateurs externes via un proxy inverse (qui s'exécute sur une machine différente dans la DMZ)L'authentification par formulaires ASP.NET ne fonctionne pas avec le proxy inverse

Par exemple, les utilisateurs internes utilisent l'URL http://intranet1/myApplication/default.aspx, externe les utilisateurs peuvent utiliser l'URL http://www.mycompany.com/externalApplication/default.aspx

Ceci est assez simple à configurer avec le réécriture d'URL, mais il y a un problème lorsque l'authentification par formulaires est activée. si un utilisateur externe frappe le site URL, forme auth tente de les envoyer automatiquement à la page de connexion qui les redirige vers la /myApplication/LoginPage.aspx url relative. En ce qui concerne l'application web, la racine de l'application est/myApplication not/externalApplication. Bien sûr, l'utilisateur externe entrant par le pare-feu ne comprend pas cette URL si la requête échoue avec une 404

est-il une solution raisonnable pour cela?

Répondre

2

Vous ne devez pas rediriger vers "/myApplication/LoginPage.aspx", mais vers "~/Login.aspx", afin qu'il soit correctement mappé en fonction de l'URL utilisée par l'utilisateur.

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

Il ne serait également pas dommageable d'avoir l'application définie comme le même dossier sur les deux serveurs. –

+0

Merci alexanderb, C'est exactement ce que je cherchais. J'avais complètement oublié que l'URL était configurable dans le web.config. – Andy

+0

Hmm, j'ai eu un autre penser à cela. Certes, votre suggestion est pas différent de ma configuration d'origine (loginUrl = «/MyApplication/default.aspx ») parce que le ~ sera converti en/MyApplication avant que la redirection est envoyé au navigateur – Andy