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

Azure应用网关能否配置基于路径的条件式mTLS(类App Service Allow模式)?

如何在Azure应用网关实现基于路径的条件式mTLS(模拟App Service的Allow模式)

我们的Azure App Service部署了API应用,包含/public/xyz等公开端点和/secured/xyz等需要X.509证书认证的端点。原本App Service配置为Client certificate mode = Allow:客户端可选择提供证书(网关会通过X-ARR-ClientCert头转发给应用),未提供证书的请求也能正常转发,实现了基于路径的差异化认证。现在需要在客户端和App Service之间加入Azure应用网关,且保持原有行为不变,但应用网关原生mTLS是针对整个监听器(域名)生效,无法直接按路径区分要求。

目前Azure应用网关没有原生的基于路径的mTLS配置选项,但可以通过SSL Profile的可选客户端证书验证 + WAF自定义规则的组合来实现等效效果,步骤如下:

1. 配置应用网关的SSL Profile(启用可选mTLS)

  • 创建或修改应用网关的SSL Profile,将客户端证书验证模式设置为Optional(对应App Service的Allow模式)。
    • 此模式下,客户端可以选择提供证书:若提供有效证书,应用网关会将证书内容通过X-ARR-ClientCert请求头转发给后端的App Service;若未提供证书,请求仍会正常转发。
  • 确保SSL Profile关联到应用网关的HTTPS监听器上。

2. 配置WAF自定义规则(基于路径控制证书要求)

如果你的应用网关已启用WAF(Web应用防火墙),可以添加自定义规则来实现路径级的证书校验:

  • 规则1(拦截无证书的/secured/请求):
    • 规则类型:自定义规则
    • 匹配条件:
      • 匹配项:请求URI
      • 运算符:正则匹配
      • 值:^/secured/.*$
      • 额外条件:检查客户端证书是否存在(使用网关内置变量{var.client.certificate.present},值为false)
    • 动作:拒绝(返回403状态码)
  • 规则2(放行/public/请求):
    • 规则类型:自定义规则
    • 匹配条件:
      • 匹配项:请求URI
      • 运算符:正则匹配
      • 值:^/public/.*$
    • 动作:允许

这样配置后:

  • 访问/secured/*路径时,若客户端未提供有效证书,WAF会直接拦截请求;若提供了证书,请求会转发给App Service,由应用层完成后续认证逻辑。
  • 访问/public/*路径时,无论客户端是否提供证书,请求都会正常转发给App Service。

注意事项

  • 若应用网关未启用WAF,需要先开启WAF(推荐使用Premium层以获得更灵活的自定义规则支持)。
  • 确保应用网关的后端池配置正确指向目标App Service,且后端设置中已配置正确的主机头(可选择"从后端目标获取主机名"),避免App Service因主机头不匹配拒绝请求。
  • 测试时需验证两种路径的请求行为:/public/端点无需证书即可访问,/secured/端点无证书时返回403,提供有效证书时能正常进入应用层认证流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:22:43