Azure App Service可否仅指定需客户端证书的路径 需拆分服务吗
关于Azure App Service客户端证书路径控制及多场景部署的解决方案
Azure App Service客户端证书路径反转逻辑实现
Azure App Service原生默认仅支持「全局开启客户端证书验证+配置排除路径跳过验证」的逻辑,未直接提供仅指定需验证路径的反转配置,但可以通过以下两种方案实现需求:
- 应用层自定义校验:将App Service的客户端证书验证模式设置为
Allow(不强制所有请求携带证书,但客户端提交的证书会被Azure网关透传到应用侧),在应用代码中添加授权中间件逻辑,仅对指定的需要验证的路径,校验请求头中Azure透传的X-ARR-ClientCert证书信息,其余路径直接放行即可,完全无需配置大量排除路径。 - 前置网关路由控制:在App Service前接入Azure应用网关或同类流量接入组件,配置不同的路由规则:匹配需要客户端证书的路径时开启证书校验,匹配其余路径时直接转发流量,App Service侧无需开启全局客户端证书验证。
多验证场景的轻量化解决方案
业务同时存在需要/不需要客户端证书的访问场景时,无需单独创建多个App Service、API Management实例,可通过以下方式实现单实例兼容:
- 针对API Management:可通过配置API层级/操作层级的策略,仅给需要客户端证书验证的接口添加
<validate-client-certificate>校验规则,其余接口直接跳过验证即可,还可根据业务需要为不同路径配置不同的证书信任规则。 - 针对App Service:可直接使用上述应用层自定义校验或前置网关路由的方案,单实例即可同时支撑两类访问场景,无需拆分服务实例。
注意:使用应用层校验客户端证书时无需担心请求头伪造问题,
X-ARR-ClientCert请求头仅由Azure官方网关填充,外部用户提交的同名请求头会被自动覆盖,不会伪造合法证书信息。
内容的提问来源于stack exchange,提问作者Benjamin E.
相关产品推荐
相关产品推荐

