如何通过传入的 header 值限制对 Azure Web App 的访问?

How do you restrict access to Azure Web App by incoming header value?

我正在尝试按照此处的说明锁定对我的 Azure Web 应用程序的访问 - https://docs.microsoft.com/en-us/azure/frontdoor/front-door-faq#how-do-i-lock-down-the-access-to-my-backend-to-only-azure-front-door

我通过 Azure 门户完成了第一步,但我不确定在何处执行第二步(过滤传入 header 'X-Forwarded-Host' 的值)。是通过门户吗?还是通过应用程序本身的主机过滤?还是通过 WAF?

Well App服务本身不提供任何基于header值限制访问的服务。应用服务只能过滤 IP 地址上的流量。

作为提供者 link,传入的 header X-Forwarded-Host 由 Front Door 发送。 Front Door Service 包括来自传入请求的 headers,除非由于限制而被删除。 Front Door 还添加了以下 headers:

阅读更多详情here

我最后只是添加了一些中间件来执行此操作:

    public class XForwardedHostMiddleware
    {
        private readonly RequestDelegate _next;

        public XForwardedHostMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public async Task InvokeAsync(HttpContext context, IHostingEnvironment environment, IConfiguration configuration)
        {            
                var forwardedHost = context.Request.Headers["X-Forwarded-Host"].ToString();

                if (forwardedHost != "ex.ample.com")
                {
                    await context.Response.WriteAsync("Blocked");
                }
                else
                {
                    await _next(context);
                }
            }           
        }
    }

自 2020 年 3 月起,Azure Frontdoor 发送 X-Azure-FDID header,其中包含您的 Frontdoor 实例的唯一值。

我写了一篇详细的博客 post 关于如何利用它来限制对您的网络应用程序的访问:https://henrihietala.fi/limit-access-to-your-azure-web-app-from-your-azure-front-door-only/