【问题标题】:Azure Application Gateway, Azure App Service and Form Based AuthenticationAzure 应用程序网关、Azure 应用程序服务和基于表单的身份验证
【发布时间】:2018-10-23 12:25:41
【问题描述】:

我正在将一个完整的基础架构迁移到 Azure;它进展缓慢,因为要学习的东西太多,而且每向前迈出两步,似乎就会后退一步。

在看似永恒的事情之后,我想我已经把这一切都整理好了,只有一个例外。

架构如下: Azure 流量管理器 ==> 2 个 Azure 应用程序网关(地理分隔)==> Azure 应用服务

流量管理器使用自定义域,网关监听同一域,当路由匹配时,将请求向下传递到应用服务。

实际的应用程序本身是一个 ASP.NET MVC 应用程序,它使用表单身份验证;这就是挑战发生的地方。

当导航到公共地址:client.domain.com 并点击该网站时,它确定用户未通过身份验证并将浏览器发送到登录页面......到目前为止一切都很好,但是,而不是使用客户端。 domain.com/login 它使用网络服务器的 dns 名称,所以 client.azurewebsites.com/login

如何更改行为以使其使用外部 DNS 名称而不是网站名称?

我无法在应用服务上设置自定义域,因为进入该站点的唯一路由是通过网关,因为这也是防火墙。

我可以进行一些 Web Config 设置吗?我正在查看出站重写规则,但这些似乎只适用于标签而不是 302 重定向。

欢迎提出任何想法。

【问题讨论】:

    标签: azure


    【解决方案1】:

    您需要在您的 webapp 上设置自定义 dns 名称(您可以使用 TXT 记录来验证 dns 名称,所以我看不出您可以将其添加到 webapp 的原因)。或者您可以更改代码。

    【讨论】:

    • 您好,不过感谢您的评论 - 如果它不在应用程序网关下,这将起作用。这充当防火墙,并有指向它的 DNS 记录;没有流量可以直接访问 Web 应用程序,因为它只能通过网关。因此,需要为网关和 web 应用程序配置相同的 DNS 记录。看来修改代码是唯一的办法:(
    • 这毫无意义。这是完全可能的
    • 感谢您的评论,但不幸的是,它不是很有帮助。我确信这是可能的,但是在应用程序网关到位后,TXT/CNAME 记录将指向应用程序网关,而不是 Web 应用程序。防火墙规则将使其无法访问,以防止直接访问该站点。这样,指向 Web 应用程序的 DNS 条目将毫无意义。
    • a记录指向app网关,txt记录用于验证自定义dns名称。哪里有问题?你甚至不需要保留它。验证它,您可以删除 txt 记录。为什么要将TXT记录指向应用程序gw???????????????????????????????????????? ????????????????????????????????????
    • 这是我认为的关键点 - 添加记录然后删除它。我没有意识到没有必要在那里保留价值。添加自定义域名时,它会给出建议(或者这是一个指令)在站点的公共 IP 地址中添加一条 A 记录,然后是指向 azurewebsites 域的 txt 记录。如果这些可以添加然后删除,它会使事情更容易理解。雪儿
    【解决方案2】:

    为了解决这个问题,我不得不对网络应用程序本身进行代码更改。不理想,但有效。

    我必须做的是通过嗅探应用网关转发的 X-Original-Host HTTP 标头来扩展将未经身份验证的请求重定向到登录页面的代码。这包含面向公众的 DNS 名称。如果标头存在并且它在预先批准的白名单上(以防止任何劫持),则将用户重定向到该域的登录页面,而不是服务器直接监听的页面(所以使用client.domain.com 而不是 client.azurewebsites.com)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      相关资源
      最近更新 更多