Application Gateway에서 App Service 문제 해결

Azure Application Gateway에서 Azure App Service가 백 엔드 대상으로 사용될 때 발생할 수 있는 문제를 진단하고 해결하는 방법에 대해 알아봅니다.

개요

이 문서에서는 아키텍처 센터: 역방향 프록시와 백 엔드 웹 애플리케이션 간에 원래 HTTP 호스트 이름 유지에 자세히 설명된 대로 다음 문제를 해결하는 방법을 알아봅니다.

  • 잘못된 절대 URL
  • 잘못된 리디렉션 URL
    • 리디렉션될 때 앱 서비스 URL이 브라우저에 표시됩니다.
    • 예를 들어 잘못된 호스트 이름이 있는 리디렉션으로 인해 OIDC 인증 흐름이 손상되었습니다. 여기에는 App Service 인증 및 권한 부여 사용이 포함됩니다.
  • 손상된 쿠키
    • 쿠키는 브라우저와 App Service 간에 전파되지 않습니다.
    • 예를 들어 앱 서비스 ARRAffinity 쿠키 도메인은 앱 서비스 호스트 이름으로 설정되고 원래 호스트 대신 "example.azurewebsites.net"에 연결됩니다. 결과적으로 세션 선호도가 손상됩니다.

위의 증상의 근본 원인은 Application Gateway에서 App Service로 사용되는 호스트 이름을 브라우저에 표시되는 다른 호스트 이름으로 재정의하는 설정입니다. 호스트 이름이 기본 App Service "azurewebsites.net" 도메인으로 재정의되는 경우가 많습니다.

Root cause - Application Gateway overwrites hostname to azurewebsites.net

샘플 구성

구성이 아래 두 가지 상황 중 하나와 일치하는 경우 설정은 이 문서의 지침을 따릅니다.

  • 백 엔드 주소에서 호스트 이름 선택은 HTTP 설정에서 활성화됩니다.
  • 특정 도메인 이름으로 재정의는 브라우저 요청에 있는 값과 다른 값으로 설정됩니다.

원인

App Service는 다중 테넌트 서비스로, 요청의 호스트 헤더를 사용하여 요청을 올바른 엔드포인트로 라우팅합니다. App Service의 기본 도메인 이름은 *.azurewebsites.net(예: contoso.azurewebsites.net)이며 이것은 애플리케이션 게이트웨이 도메인 이름과는 다릅니다(예: contoso.com). 백 엔드 App Service에 브라우저에서 볼 수 있듯이 도메인과 일치하는 리디렉션 URL 또는 쿠키를 생성하는 데 필요한 컨텍스트가 없습니다.

솔루션

프로덕션 권장 솔루션은 호스트 이름을 재정의하지 않도록 Application Gateway 및 App Service를 구성하는 것입니다. Application Gateway를 사용하여 App Service 구성"Custom Domain(권장)"에 대한 지침을 따릅니다.

역방향 프록시와 해당 백 엔드 웹 애플리케이션 간에 원래 HTTP 호스트 이름 유지 문서에 설명된 대로 의미를 평가한 후에 다른 해결 방법(예: 아래에 설명된 대로 위치 헤더 다시 쓰기)을 적용하는 것이 좋습니다. 이러한 의미에는 도메인에 바인딩된 쿠키와 위치 헤더 외부의 절대 URL이 손상될 가능성이 포함됩니다.

해결 방법: 위치 헤더 다시 쓰기

Warning

이 구성에는 제한 사항이 있습니다. 클라이언트와 Application Gateway 간에 그리고 애플리케이션과 백 엔드의 App Service 간에 서로 다른 호스트 이름을 사용하는 경우의 의미를 검토하는 것이 좋습니다. 자세한 내용은 아키텍처 센터: 역방향 프록시와 백 엔드 웹 애플리케이션 간에 원래 HTTP 호스트 이름 유지 문서를 검토하세요.

위치 헤더의 호스트 이름을 애플리케이션 게이트웨이 도메인 이름으로 설정합니다. 이 작업을 수행하려면 응답의 위치 헤더에 azurewebsites.net이 포함되었는지를 평가하는 조건으로 다시 쓰기 규칙을 만듭니다. 또한 애플리케이션 게이트웨이의 호스트 이름을 갖도록 위치 헤더를 다시 쓰는 작업을 수행해야 합니다. 자세한 내용은 위치 헤더 다시 쓰기 지침을 참조하세요.

참고 항목

HTTP 헤더 다시 쓰기 지원은 Application Gateway의 Standard_v2 및 WAF_v2 SKU에서만 가능합니다. v2 SKU에서 사용할 수 있는 헤더 다시 쓰기 및 기타 고급 기능에 대해 v2로 마이그레이션하는 것이 좋습니다.

다음 단계

이전 단계로 문제가 해결되지 않으면 지원 티켓을 엽니다.