Azure APIM单实例下为指定API单独启用客户端证书认证方案咨询
Azure APIM单实例下仅为指定API启用客户端证书认证方案
是的,无需部署多套APIM服务实例即可实现该需求,具体方案如下:
实现步骤
- 第一步:全局开启证书协商配置
进入APIM控制台的自定义域配置页,开启当前业务域名的协商客户端证书选项。该配置仅使APIM具备接收客户端传入证书的能力,不会强制全量请求必须携带证书,未携带证书的请求仍可正常进入APIM的策略执行环节。 - 第二步:为目标API配置独立证书校验入站策略
找到需要启用客户端证书认证的API-2,在其入站策略配置中添加证书校验规则,示例策略如下:
无需对API-1做任何证书相关配置,未携带证书的API-1请求可正常访问。<inbound> <base /> <choose> <!-- 校验证书是否存在 --> <when condition="@(context.Request.Certificate == null)"> <return-response> <set-status code="403" reason="Missing client certificate" /> </return-response> </when> <!-- 按需添加额外校验规则,例如指纹校验、颁发者校验、有效期校验等 --> <when condition="@(context.Request.Certificate.Thumbprint != "YOUR_EXPECTED_CERT_THUMBPRINT")"> <return-response> <set-status code="403" reason="Invalid client certificate" /> </return-response> </when> </choose> </inbound>
消费层级APIM特殊处理
如果你使用的是消费层级的APIM实例,开启全局协商客户端证书后会强制所有请求必须携带证书,此时可通过域名隔离实现需求:
- 为API-1和API-2分别绑定独立的自定义域名
- 仅为API-2对应的自定义域名开启协商客户端证书选项,API-1对应的域名保持默认配置即可
内容的提问来源于stack exchange,提问作者andre
相关产品推荐
相关产品推荐

