【问题标题】:ASP.NET forms authentication doesn't work with reverse proxyASP.NET 表单身份验证不适用于反向代理
【发布时间】:2011-05-25 22:21:00
【问题描述】:

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

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

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

是否有合理的解决方案?

【问题讨论】:

  • 你是怎么解决这个问题的?请看here

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


【解决方案1】:

您不应该重定向到“/myApplication/LoginPage.aspx”,而是重定向到“~/Login.aspx”,因此它会根据用户点击的 URL 正确映射。

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

【讨论】:

  • 将应用程序定义为两台服务器上的同一个文件夹也没有什么坏处。
  • 感谢 alexanderb,这正是我想要的。我完全忘记了 URL 可以在 web.config 中配置。
  • 嗯,我有另一个想法。当然,您的建议与我的原始配置(loginurl="/MyApplication/default.aspx")没有什么不同,因为在重定向发送到浏览器之前 ~ 将被转换为 /MyApplication
  • 不,如果rest URL rerwiting是好的,它实际上肯定会重定向到externalApplication/login.aspx :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 2016-03-12
相关资源
最近更新 更多