Condividi tramite


Risolvere i problemi del Servizio app di Azure nel gateway applicazione

Informazioni su come diagnosticare e risolvere i problemi che possono verificarsi quando si usa il Servizio app di Azure come destinazione back-end con il gateway applicazione di Azure.

Panoramica

Questo articolo illustra come risolvere i problemi seguenti, come descritto più dettagliatamente 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 si verifica un reindirizzamento
    • esempio: un flusso di autenticazione OIDC viene interrotto a causa di un reindirizzamento con nome host errato. Questo include l'uso di Autenticazione e autorizzazione del Servizio app
  • Cookie danneggiati
    • 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 dal gateway applicazione per il Servizio app usando un nome host diverso rispetto a quello visto dal browser. Spesso viene eseguito l'override nel nome host nel dominio "azurewebsites.net" del Servizio app predefinito.

Root cause - Application Gateway overwrites hostname to azurewebsites.net

Configurazione di esempio

Nel caso in cui la propria configurazione corrisponda a una delle due situazioni seguenti, è necessario eseguire le istruzioni riportate in questo articolo:

  • Seleziona il nome host dall'indirizzo back-end è abilitato in Impostazioni HTTP
  • Esegui l'override con un nome di dominio specifico è impostato su un valore diverso da quello della richiesta del browser

Causa

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

Soluzione

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

Prendere in considerazione l'applicazione di un'altra soluzione alternativa, ad esempio una riscrittura dell'intestazione Location come descritto di seguito, solo 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 la possibilità che i cookie associati al dominio e gli URL assoluti esterni all'intestazione Location rimangano non funzionanti.

Soluzione alternativa: riscrivere l'intestazione Location

Avviso

Questa configurazione presenta limitazioni. È consigliabile esaminare le implicazioni associate all'uso di nomi host diversi tra il client e il gateway applicazione e tra l'applicazione e il 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 Location sul nome di dominio del gateway applicazione. A tale scopo, creare una regola di riscrittura con una condizione che valuta se l'intestazione Location nella risposta contiene azurewebsites.net. Deve anche eseguire un'azione per riscrivere l'intestazione Location in modo che includa il nome host del gateway applicazione. Per altre informazioni, vedere le istruzioni su come riscrivere l'intestazione Location.

Nota

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

Passaggi successivi

Se la procedura sopra descritta non consente di risolvere il problema, aprire un ticket di supporto.