Как ограничить доступ к Azure Web App по значению входящего заголовка?
Я пытаюсь заблокировать доступ к своему веб-приложению Azure, следуя приведенным здесь инструкциям - https://docs.microsoft.com/en-us/azure/frontdoor/front-door-faq.
Первый шаг, который я сделал через портал Azure, но я не уверен, где делать второй шаг (отфильтруйте значения для входящего заголовка 'X-Forwarded-Host'). Это через портал? или через Host Filtering в самом приложении? или через WAF?
3 ответа
С марта 2020 года Azure Frontdoor отправляет X-Azure-FDID
заголовок с уникальным значением вашего экземпляра Frontdoor.
Я написал подробное сообщение в блоге о том, как использовать это для ограничения доступа к вашему веб-приложению: https://henrihietala.fi/limit-access-to-your-azure-web-app-from-your-azure-front-door-only/
Ну, служба приложений сама по себе не предоставляет никаких услуг по ограничению доступа на основе значений заголовков. Служба приложений может фильтровать трафик только по IP-адресу.
Я просто добавил промежуточное программное обеспечение для этого:
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);
}
}
}
}