Risolvere i problemi di servizio app in gateway applicazione

Informazioni su come diagnosticare e risolvere i problemi che possono verificarsi quando app Azure Servizio viene usato come destinazione back-end con app Azure lication Gateway.

Panoramica

Questo articolo illustra come risolvere i problemi seguenti, come descritto in Dettaglio in Centro architetture: Mantenere il nome host HTTP originale tra un proxy inverso e l'applicazione Web back-end.

  • URL assoluti non corretti
  • URL di reindirizzamento non corretti
    • l'URL del servizio app viene esposto nel browser quando è presente un reindirizzamento
    • un esempio: un flusso di autenticazione OIDC viene interrotto a causa di un reindirizzamento con un nome host errato; ciò include l'uso dell'autenticazione e dell'autorizzazione di servizio app
  • Biscotti interrotti
    • i cookie non vengono propagati tra il browser e il servizio app
    • un esempio: il dominio del cookie ARRAffinity del servizio app è impostato sul nome host del servizio app ed è associato a "example.azurewebsites.net", anziché all'host originale. Di conseguenza, l'affinità di sessione viene interrotta.

La causa radice dei sintomi precedenti è una configurazione che esegue l'override del nome host usato da gateway applicazione verso servizio app in un nome host diverso, come illustrato dal browser. Spesso viene eseguito l'override del nome host nel dominio predefinito servizio app "azurewebsites.net".

Root cause - Application Gateway overwrites hostname to azurewebsites.net

Configurazione di esempio

Nel caso in cui la configurazione corrisponda a una delle due situazioni seguenti, la configurazione è soggetta alle istruzioni riportate in questo articolo:

  • Selezionare Il nome host dall'indirizzo back-end è abilitato in HTTP Impostazioni
  • Eseguire l'override con un nome di dominio specifico è impostato su un valore diverso da quello che la richiesta del browser ha

Causa

servizio app è un servizio multi-tenant, quindi usa l'intestazione host nella richiesta per instradare la richiesta all'endpoint corretto. Il nome di dominio predefinito di servizio app, *.azurewebsites.net (ad esempio, contoso.azurewebsites.net), è diverso dal nome di dominio del gateway applicazione (ad esempio, contoso.com). Il back-end servizio app manca il contesto necessario per generare l'URL di reindirizzamento o i cookie allineati al dominio, come illustrato dal browser.

Soluzione

La soluzione consigliata per la produzione consiste nel configurare gateway applicazione e servizio app per non eseguire l'override del nome host. Seguire le istruzioni per "Dominio personalizzato (scelta consigliata)" in Configurare servizio app con gateway applicazione

Prendere in considerazione solo l'applicazione di un'altra soluzione alternativa ( ad esempio una riscrittura dell'intestazione percorso come descritto di seguito) dopo aver valutato le implicazioni descritte nell'articolo: Mantenere il nome host HTTP originale tra un proxy inverso e l'applicazione Web back-end. Queste implicazioni includono il potenziale per i cookie associati a un dominio e per l'URL assoluto all'esterno dell'intestazione della posizione, per rimanere interrotto.

Soluzione alternativa: riscrivere l'intestazione Location

Avviso

Questa configurazione presenta limitazioni. È consigliabile esaminare le implicazioni dell'uso di nomi host diversi tra il client e gateway applicazione e tra l'applicazione e servizio app nel back-end. Per altre informazioni, vedere l'articolo in Centro architetture: Mantenere il nome host HTTP originale tra un proxy inverso e l'applicazione Web back-end

Impostare il nome host nell'intestazione del percorso sul nome di dominio del gateway applicazione. A tale scopo, creare una regola di riscrittura con una condizione che valuta se l'intestazione della posizione nella risposta contiene azurewebsites.net. Deve anche eseguire un'azione per riscrivere l'intestazione del percorso in modo che abbia il nome host del gateway applicazione. Per altre informazioni, vedere le istruzioni su come riscrivere l'intestazione del percorso.

Nota

Il supporto della riscrittura dell'intestazione HTTP è disponibile solo per lo SKU Standard_v2 e WAF_v2 di gateway applicazione. È consigliabile eseguire la migrazione alla versione 2 per la riscrittura dell'intestazione e altre funzionalità avanzate disponibili con LO SKU v2.

Passaggi successivi

Se i passaggi precedenti non hanno risolto il problema, aprire un ticket di supporto.