目前,我们正在运行Azure应用服务托管应用程序,提供不同的API端点,如/public/xyz
和/secured/xyz
,其中/secured/...
下的所有API都在应用程序级别上受到保护,需要基于x.509的AuthN。因此,应用服务配置有“客户端证书模式==允许”,这导致应用(应用服务)将向客户端请求证书的事实。如果客户端提供证书,则应用服务将获取该证书,并通过X-ARR-ClientCert
HTTP自定义头转发到应用程序。但即使客户端没有发送证书,请求也会转发给应用程序。这个概念工作得很好,我们可以根据路径支持不同的AuthN方法。
由于安全准则,我们现在必须将Azure应用程序网关放置在客户端和Azure应用程序服务之间,并需要找到一种方法,使上述行为保持不变。
我搜索了微软文档和互联网,但不能弄清楚是否有一种方法来配置App GW,在涉及到客户端证书处理时,应用服务的工作方式相同。到目前为止,我只能通过使用SSL配置文件激活mTLS,但这适用于侦听器(完整域),并且要求客户端始终发送证书,即使只请求/public/...
API端点。
因此,我的问题是,是否有一个技巧来配置App GW,使其行为与上面描述的App Service相同(客户端证书模式==允许)。类似于条件(基于路径的)mTLS?
1条答案
按热度按时间8wtpewkr1#
注意:根据MsDoc*,目前仅在前端客户端和应用网关之间可以进行相互认证。暂不支持后端双向认证。**
Azure应用服务中的“客户端证书模式==允许”配置在Azure应用程序网关中没有等效的内置功能。App Gateway仅支持监听器级别的mTLS(双向TLS)身份验证,这意味着它要求客户端始终向监听器发送所有请求的证书,并且不能基于特定路径有条件地启用。
应用程序服务内置在前端,它将X-ARR-clientcert请求标头发送到应用程序服务中运行的代码,代码执行验证并检查客户端证书信息,以确定您将获得身份验证和授权
Allow不那么严格,
Require
会给予你证书,Allow
会给你证书,用另一种身份验证方式。配置的监听器和启用的具有中间证书和测试客户端证书的SSl简档来自受信任CA,然后规则将重写规则,经由报头将具有客户端证书的服务器值发送到App网关。
要了解更多详细信息,请查看以下参考资料:
Overview of mutual authentication on Azure Application Gateway | Microsoft Learn
Configure listener-specific SSL policies on Azure Application Gateway through portal | Microsoft Learn