azure - Azure 应用程序网关是否支持条件 mTLS

标签 azure azure-application-gateway

目前,我们正在运行一个 Azure 应用服务托管应用程序,提供不同的 API 端点,例如 /public/xyz/secured/xyz,其中所有 API 都位于 /secure/... 在应用程序级别受到保护,需要基于 x.509 的 AuthN。因此,应用程序服务配置为“客户端证书模式==允许”,这导致应用程序(应用程序服务)将向客户端请求证书。如果客户端提供证书,应用服务将获取该证书并通过 X-ARR-ClientCert HTTP 自定义 header 转发到应用程序。但即使客户端没有发送证书,请求也会转发到应用程序。这个概念非常有效,我们可以根据路径支持不同的 AuthN 方法。

根据安全准则,我们现在必须将 Azure 应用程序网关放置在客户端和 Azure 应用服务之间,并且需要找到一种方法使上述行为保持不变。

我搜索了 Microsoft 文档和互联网,但无法弄清楚是否有一种方法可以像应用程序服务在处理客户端证书时的工作方式一样配置应用程序 GW。到目前为止,我只能使用 aSSL 配置文件激活 mTLS,但这适用于监听器(完整域),并且要求客户端始终发送证书,即使仅请求 /public/... API 端点。

所以我的问题是是否有一个技巧可以将应用程序 GW 配置为与上面的应用程序服务描述相同(客户端证书模式 == 允许)。像条件(基于路径)mTLS 之类的东西?

最佳答案

Note that: As per MsDoc mutual authentication is currently possible only between the frontend client and the Application Gateway. Backend mutual authentication is currently not supported.

Azure 应用服务中的“客户端证书模式 == 允许”配置在 Azure 应用程序网关中没有等效的内置功能。应用程序网关仅支持监听器级别的 mTLS(相互 TLS)身份验证,这意味着它要求客户端始终向监听器发送所有请求的证书,并且无法根据特定路径有条件地启用。

前端构建的应用程序服务将 X-ARR-clientcert 请求 header 发送到应用程序服务中运行的代码,代码进行验证并检查客户端证书信息以确定您将获得身份验证和授权

允许不太严格,Require将为您提供证书,Allow为您提供另一种身份验证方式的证书。

enter image description here

配置监听器并启用带有中间证书的 SSL 配置文件,测试客户端证书来自受信任的 CA,然后规则将重写规则,通过 header 将带有客户端证书的服务器值发送到应用程序网关。

enter image description here

enter image description here

要了解更多详细信息,请查看以下引用资料:

Overview of mutual authentication on Azure Application Gateway | Microsoft Learn

Configure listener-specific SSL policies on Azure Application Gateway through portal | Microsoft Learn

关于azure - Azure 应用程序网关是否支持条件 mTLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76426791/

相关文章:

以容器实例作为后端目标的 Azure 应用程序网关后端

azure - 如何使用 Automation Runbook 重命名 Azure SQL 数据库?

azure - 多重身份验证 - 无法通过移动应用程序进行身份验证

Azure 应用程序网关 - 基于 cookie 值的路由

Azure 应用程序网关 - 将流量重定向到外部站点而不更改 URL

Azure 应用程序网关 : Subnet must only have application gateway

由于 NetFx451,Azure 部署失败

sql - 将逗号分隔的 id 插入表中

azure - 如何在 Azure 中查看 Azure Function 主机启动时间?

azure - 在 azure 中创建 WAFV2 应用程序网关时添加子网时出错