Azure应用程序网关,Azure应用程序服务和基于表单的身份验证

时间:2018-10-23 12:25:42

标签: azure

我正在将完整的基础结构迁移到Azure;进度很慢,因为有很多东西要学习,而且每前进两步,似乎就会退一步。

在看起来像是永恒之后,我想我已经把所有东西都分类了,只有一个例外。

体系结构如下: Azure Traffic Manager ==> 2个Azure应用程序网关(地理位置分开)==> Azure App Service

自定义域用于流量管理器,网关正在侦听相同的域,并且当路由匹配时,将请求传递给应用程序服务。

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

导航到公共地址:client.domain.com并访问网站时,它确定用户未通过身份验证,并将浏览器发送到登录页面...到目前为止,效果很好,而不是使用客户端。 domain.com/login使用网络服务器的dns名称,因此client.azurewebsites.com/login

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

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

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

任何想法都将受到欢迎。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

为了解决此问题,我不得不对Web应用程序本身进行代码更改。不太理想,但是有效。

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