You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于路径的App Service+EasyAuth在应用网关后回调报HTTP 500错误

应用网关后非根路径App Service的EasyAuth配置问题及解决

问题描述

我正尝试在应用网关后配置多个基于路径路由的App Service,搭配EasyAuth认证。具体配置为:根应用指向https://my-custom-internal-domain/,App1指向https://my-custom-internal-domain/app1。这些App Service使用不同的Entra ID应用进行EasyAuth认证,因使用内部私有域,未配置自定义域名。

每个应用的authSettingsV2配置如下:

{
    "httpSettings": {
        "forwardProxy": {
          "convention": "Custom",
          "customHostHeaderName": "X-Original-Host"
        }
    },
    "identityProviders": {
      "azureActiveDirectory": {
         "registration": {
            "clientId": "f4a511...",
            "clientSecretSettingName": "MICROSOFT_PROVIDER_AUTHENTICATION_SECRET",
            "openIdIssuer": "https://sts.windows.net/d7.../v2.0"
         },
        "enabled": true,
        "login": {
            "loginParameters": [
                "redirect_uri=https://my-custom-internal-domain/<app>/.auth/login/aad/callback"
            ]
         }
      }
    },
    "login": {
        "allowedExternalRedirectUrls": [
            "https://my-custom-internal-domain/<app>/.auth/login/aad/callback"
        ]
    }
}

根应用的认证流程正常,用户可成功认证且重定向URI配置正确(网关未设置重写规则,仅在App Service上配置了正向代理)。但访问App1时,登录流程启动后,在/my-custom-internal-domain/app1/.auth/login/aad/callback页面出现HTTP 500错误。查看App Service的EasyAuth错误日志,发现报错信息:

Failed to read the 'AppServiceAuthSession' cookie for site 'my-custom-internal-domain': The signature of the encrypted data is invalid.

推测是Cookie路径配置不当导致认证失败,但不知如何排查与修复。请问如何为非根路径的应用配置EasyAuth认证?该场景是否可行?

解决方案

该场景完全可行,问题核心在于EasyAuth默认生成的Cookie路径为根路径/,导致不同子路径的应用共享了根应用的Cookie,而每个App Service的加密密钥独立,因此验证签名时出现失效错误。需针对非根路径应用调整以下配置:

1. 配置Cookie路径与应用路径匹配

在authSettingsV2中新增cookieSettings节点,指定Cookie的路径为应用对应的子路径(如App1对应/app1/),确保每个应用的Cookie仅在自身路径下生效,避免跨应用冲突:

"cookieSettings": {
    "path": "/app1/"
}

2. 修正重定向URI与允许跳转URL

将配置中的占位符<app>替换为实际路径名app1,确保loginParameters中的redirect_uri和allowedExternalRedirectUrls与应用实际回调路径完全匹配:

"login": {
    "loginParameters": [
        "redirect_uri=https://my-custom-internal-domain/app1/.auth/login/aad/callback"
    ],
    "allowedExternalRedirectUrls": [
        "https://my-custom-internal-domain/app1/.auth/login/aad/callback"
    ]
}

3. 确认应用网关路由配置

应用网关的路径规则需将/app1/*的请求完整转发至App1,不要启用路径重写,保证App Service能正确识别请求的上下文路径。

4. 同步Entra ID应用注册配置

每个App Service对应的Entra ID应用注册中,必须添加对应的回调URI(如https://my-custom-internal-domain/app1/.auth/login/aad/callback),否则Entra ID会拒绝回调请求。

5. 清除浏览器缓存与Cookie

测试前清除浏览器中对应域名的所有Cookie,避免之前残留的根路径Cookie干扰新配置生效。

App1完整authSettingsV2示例

{
    "httpSettings": {
        "forwardProxy": {
          "convention": "Custom",
          "customHostHeaderName": "X-Original-Host"
        }
    },
    "identityProviders": {
      "azureActiveDirectory": {
         "registration": {
            "clientId": "f4a511...",
            "clientSecretSettingName": "MICROSOFT_PROVIDER_AUTHENTICATION_SECRET",
            "openIdIssuer": "https://sts.windows.net/d7.../v2.0"
         },
        "enabled": true,
        "login": {
            "loginParameters": [
                "redirect_uri=https://my-custom-internal-domain/app1/.auth/login/aad/callback"
            ]
         }
      }
    },
    "login": {
        "allowedExternalRedirectUrls": [
            "https://my-custom-internal-domain/app1/.auth/login/aad/callback"
        ]
    },
    "cookieSettings": {
        "path": "/app1/"
    }
}

内容的提问来源于stack exchange,提问作者Franck Cornu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:43:13