ASP.NET表单身份验证不适用于反向代理

时间:2010-12-15 13:43:10

标签: asp.net url-rewriting forms-authentication reverse-proxy

我有一个ASP.NET应用程序。除了直接访问应用程序的本地用户之外,我还希望通过反向代理(在DMZ中的其他计算机上运行)将其公开给外部用户。

例如,假设内部用户使用网址http://intranet1/myApplication/default.aspx,外部用户可能会使用网址http://www.mycompany.com/externalApplication/default.aspx

设置URL重新创建非常简单,但打开表单身份验证时出现问题。如果外部用户访问URL站点,表单auth会尝试自动将它们发送到登录页面,登录页面将它们重定向到相对url /myApplication/LoginPage.aspx。就Web应用程序而言,应用程序根位于/ myApplication not / externalApplication。当然,通过防火墙进入的外部用户不理解此URL,因此请求失败并带有404

对此有合理的解决方案吗?

1 个答案:

答案 0 :(得分:2)

您不应该重定向到“/myApplication/LoginPage.aspx”而是“〜/ Login.aspx”,因此它将被正确映射,具体取决于用户点击的URL。

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