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

Azure应用网关V2与App Service双向认证遇Access Denied错误

问题排查与解决步骤

1. 确认后端HTTP设置的证书传递配置

AGW要将用户的客户端证书转发给后端App Service,必须在后端HTTP设置中开启Pick client certificate选项,并关联你之前创建的SSL配置文件(对应根证书的公证书)。如果未开启该选项,AGW不会传递客户端证书,后端App Service会因缺少证书返回403拒绝访问。

2. 核对App Service的证书信任规则

你的App Service已开启双向认证,需确认:

  • AGW SSL配置文件中的根证书,与App Service上上传的根证书完全一致(需保证公钥匹配,导出公证书时避免操作错误);
  • App Service的双向认证规则,是否信任AGW转发过来的客户端证书——若证书不是由信任的根证书签发,后端会直接拒绝请求。

3. 明确健康探针的局限性

你调整探针状态码范围后显示健康,但要注意:AGW的健康探针不支持携带客户端证书,而你的App Service要求双向认证,所以探针请求本身会被返回403。这种探针健康状态仅为表面状态,不代表实际用户请求能正常通过AGW转发到后端。

4. 检查AGW监听器的SSL配置

AGW监听器需配置为HTTPS类型,同时:

  • 绑定test.mydomain.com对应的服务器SSL证书;
  • 将Client certificate authentication设置为Require或Optional(根据你的业务需求),确保AGW能接收用户请求中的客户端证书,并转发给后端App Service。

5. 利用日志定位具体问题

  • 开启App Service的诊断日志,查看HTTP请求日志,确认来自AGW的请求是否携带客户端证书,以及403错误的具体原因(如证书未被信任、请求无证书等);
  • 查看AGW的访问日志和后端健康日志,排查请求在AGW层面的处理细节,比如证书传递是否出现异常。

6. 手动验证证书传递流程

使用curl工具分别测试直接访问App Service和通过AGW访问的情况,对比结果:

# 直接访问App Service(验证证书有效性)
curl -v --cert 你的客户端证书.pem --key 你的客户端密钥.pem https://apptemp.azurewebsites.net/swagger/index.html

# 通过AGW访问(验证证书传递是否正常)
curl -v --cert 你的客户端证书.pem --key 你的客户端密钥.pem https://test.mydomain.com/swagger/index.html

根据返回的错误信息,进一步定位是证书信任问题,还是AGW未正确转发证书。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:25:45