Solución de problemas de App Service en Application Gateway
Aprenda a diagnosticar y resolver los problemas que pueden surgir cuando se usa Azure App Service como destino de back-end con Azure Application Gateway.
Información general
En este artículo, aprenderá a solucionar los siguientes problemas, como se describe con más detalle en el Centro de arquitectura: Conservar el nombre de host HTTP original entre un proxy inverso y su aplicación web back-end
- Direcciones URL absolutas incorrectas
- Direcciones URL de redireccionamiento incorrectas
- la dirección URL de App Service se expone en el explorador cuando hay un redireccionamiento
- un ejemplo de esto: se ha roto un flujo de autenticación de OIDC debido a un redireccionamiento con un nombre de host incorrecto; esto incluye el uso de Autenticación y Autorización de App Service
- Cookies rotas
- las cookies no se propagan entre el explorador y App Service
- un ejemplo de esto: el dominio de la cookie ARRAffinity de App Service establecido en el nombre de host de App Service está vinculado a "example.azurewebsites.net" en lugar del host original. Como resultado, la afinidad de sesión se ha roto.
La causa principal de los síntomas anteriores es una configuración que invalida el nombre de host tal como lo usa Application Gateway hacia App Service en un nombre de host diferente, tal como lo ve el explorador. A menudo, el nombre de host se reemplaza por el dominio de App Service predeterminado, "azurewebsites.net".
Configuración de ejemplo
En caso de que la configuración coincida con una de las dos situaciones siguientes, la configuración está sujeta a las instrucciones de este artículo:
- Seleccionar el nombre de host de la dirección de back-end está habilitado en la configuración HTTP
- La invalidación con un nombre de dominio específico se establece en un valor diferente del que tiene la solicitud del explorador
Causa
App Service es un servicio multiinquilino, por lo que usa el encabezado de host en la solicitud para enrutar la solicitud al punto de conexión correcto. El nombre de dominio predeterminado de App Service, *.azurewebsites.net (por ejemplo, contoso.azurewebsites.net), es diferente del nombre de dominio de la puerta de enlace de aplicaciones (por ejemplo, contoso.com). Al back-end de App Service le falta el contexto necesario para generar direcciones URL de redireccionamiento o cookies que se alineen con el dominio tal como lo ve el explorador.
Solución
La solución recomendada para producción es configurar Application Gateway y App Service para no invalidar el nombre de host. Siga las instrucciones de Custom Domain (recommended) (Dominio personalizado [recomendado]) en Configurar App Service con Application Gateway
Considere la posibilidad de aplicar otra solución alternativa (por ejemplo, una reescritura del encabezado de ubicación como se describe a continuación) después de evaluar las implicaciones como se describe en el artículo Conservar el nombre de host HTTP original entre un proxy inverso y su aplicación web back-end. Estas implicaciones incluyen la posibilidad de que las cookies enlazadas a un dominio y las direcciones URL absolutas fuera del encabezado de ubicación permanezcan rotas.
Solución alternativa: reescribir el encabezado de ubicación
Advertencia
Esta configuración presenta algunas limitaciones. Se recomienda revisar las implicaciones de usar nombres de host diferentes entre el cliente y Application Gateway y entre Application Gateway y App Service en back-end. Para más información, consulte el artículo del Centro de arquitectura: Conservar el nombre de host HTTP original entre un proxy inverso y su aplicación web back-end
Establezca el nombre de host del encabezado de ubicación en el nombre de dominio de la puerta de enlace de aplicaciones. Para ello, cree una regla de reescritura con una condición que evalúe si el encabezado de ubicación en la respuesta contiene azurewebsites.net. También debe realizar una acción para volver a escribir el encabezado de ubicación de modo que tenga el nombre de host de la puerta de enlace de aplicaciones. Para obtener más información, vea las instrucciones para volver a escribir el encabezado de ubicación.
Nota:
La compatibilidad con la reescritura de encabezados HTTP solo está disponible para Standard_v2 y WAF_v2 SKU de Application Gateway. Se recomienda migrar a v2 para la reescritura de encabezados y otras funcionalidades avanzadas que están disponibles con la versión v2 de la SKU.
Pasos siguientes
Si los pasos anteriores no resuelven el problema, abra una incidencia de soporte técnico.