Problemen met App Service in Application Gateway oplossen

Meer informatie over het vaststellen en oplossen van problemen die kunnen optreden wanneer Azure-app Service wordt gebruikt als back-enddoel met Azure-toepassing Gateway.

Overzicht

In dit artikel leert u hoe u de volgende problemen kunt oplossen, zoals beschreven in Architecture Center: De oorspronkelijke HTTP-hostnaam behouden tussen een omgekeerde proxy en de back-endwebtoepassing

  • Onjuiste absolute URL's
  • Onjuiste omleidings-URL's
    • de URL van de app-service wordt weergegeven in de browser wanneer er een omleiding is
    • een voorbeeld hiervan: een OIDC-verificatiestroom is verbroken vanwege een omleiding met een verkeerde hostnaam; dit omvat het gebruik van App Service-verificatie en -autorisatie
  • Gebroken cookies
    • cookies worden niet doorgegeven tussen de browser en de App Service
    • een voorbeeld hiervan: het cookiedomein ARRAffinity van de app-service is ingesteld op de hostnaam van de app-service en is gekoppeld aan 'example.azurewebsites.net', in plaats van de oorspronkelijke host. Als gevolg hiervan is sessieaffiniteit verbroken.

De hoofdoorzaak voor de bovenstaande symptomen is een installatie die de hostnaam overschrijft die door Application Gateway naar App Service wordt gebruikt in een andere hostnaam, zoals wordt gezien door de browser. Vaak wordt de hostnaam overschreven naar het standaarddomein 'azurewebsites.net' van App Service.

Root cause - Application Gateway overwrites hostname to azurewebsites.net

Voorbeeldconfiguratie

Als uw configuratie overeenkomt met een van de onderstaande twee situaties, is uw installatie onderworpen aan de instructies in dit artikel:

  • Hostnaam kiezen uit back-endadres is ingeschakeld in HTTP-Instellingen
  • Overschrijven met een specifieke domeinnaam is ingesteld op een andere waarde dan wat de browseraanvraag heeft

Oorzaak

App Service is een multitenant-service, dus deze maakt gebruik van de hostheader in de aanvraag om de aanvraag naar het juiste eindpunt te routeren. De standaarddomeinnaam van App Services, *.azurewebsites.net (bijvoorbeeld contoso.azurewebsites.net), verschilt van de domeinnaam van de toepassingsgateway (bijvoorbeeld contoso.com). De back-end-App Service mist de vereiste context voor het genereren van omleidings-URL's of cookies die zijn afgestemd op het domein, zoals te zien is in de browser.

Oplossing

De door de productie aanbevolen oplossing is om Application Gateway en App Service te configureren om de hostnaam niet te overschrijven. Volg de instructies voor 'Aangepast domein (aanbevolen)' in App Service configureren met Application Gateway

Overweeg alleen een andere tijdelijke oplossing toe te passen (zoals een herschrijf van de locatieheader zoals hieronder wordt beschreven) nadat u de gevolgen hebt beoordeeld, zoals beschreven in het artikel: Behoud de oorspronkelijke HTTP-hostnaam tussen een omgekeerde proxy en de back-endwebtoepassing. Deze gevolgen zijn onder andere het potentieel voor domeingebonden cookies en voor absolute URL's buiten de locatieheader, om verbroken te blijven.

Tijdelijke oplossing: de locatieheader opnieuw schrijven

Waarschuwing

Deze configuratie heeft beperkingen. We raden u aan om de gevolgen te bekijken van het gebruik van verschillende hostnamen tussen de client en Application Gateway en tussen Application en App Service in de back-end. Raadpleeg het artikel in Architecture Center voor meer informatie: behoud de oorspronkelijke HTTP-hostnaam tussen een omgekeerde proxy en de back-endwebtoepassing

Stel de hostnaam in de locatieheader in op de domeinnaam van de toepassingsgateway. Hiervoor maakt u een herschrijfregel met een voorwaarde die evalueert of de locatieheader in het antwoord azurewebsites.net bevat. Er moet ook een actie worden uitgevoerd om de locatieheader te herschrijven om de hostnaam van de toepassingsgateway te hebben. Zie de instructies voor het herschrijven van de locatieheader voor meer informatie.

Notitie

De ondersteuning voor het herschrijven van HTTP-headers is alleen beschikbaar voor de Standard_v2 en WAF_v2 SKU van Application Gateway. U wordt aangeraden te migreren naar v2 voor het herschrijven van headers en andere geavanceerde mogelijkheden die beschikbaar zijn met v2 SKU.

Volgende stappen

Als het probleem niet is opgelost met de voorgaande stappen, opent u een ondersteuningsticket.