使用客户端证书进行身份验证

适用于:所有 API 管理层级

通过 authentication-certificate 策略使用客户端证书对后端服务进行身份验证。 当证书首先安装到 API 管理时,首先通过其指纹或证书 ID(资源名称)对其进行标识。

注意

最大程度地减少配置此策略时凭据暴露的风险。 Microsoft建议使用更安全的身份验证方法(如果后端支持),例如托管标识身份验证。 如果在策略定义中配置敏感信息,我们建议使用命名值并在 Azure 密钥保管库 中存储机密。

注意

如果证书引用存储在 Azure 密钥保管库 中的证书,请使用证书 ID 来标识它。 轮换密钥保管库证书时,证书在 API 管理中的指纹将会更改,并且如果新证书由指纹标识,则该策略将无法解析新证书。

注意

按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略

策略语句

<authentication-certificate thumbprint="thumbprint" certificate-id="resource name" body="certificate byte array" password="optional password"/>

属性

属性 说明 需要 默认
指纹 客户端证书的指纹。 允许使用策略表达式。 thumbprintcertificate-id 可以存在。 空值
certificate-id 证书资源名称。 允许使用策略表达式。 thumbprintcertificate-id 可以存在。 空值
身体 字节数组形式的客户端证书。 在未从内置证书存储中检索到证书的情况下使用。 允许使用策略表达式。 空值
密码 客户端证书的密码。 允许使用策略表达式。 body 中的指定证书受密码保护的情况下使用。 空值

Important

当通过使用 certificate-id。 拥有编写策略权限的用户可以引用任何可用的证书,并用它来认证后端服务的请求,即使用户没有证书资源的读权限。 这不会授予获取证书或其私钥的权限。

使用情况

使用注意事项

  • 建议配置密钥保管库证书来管理用于保护对后端服务的访问的证书。
  • 如果在此策略中配置证书密码,建议使用命名值

示例

由证书 ID 标识的客户端证书

<authentication-certificate certificate-id="544fe9ddf3b8f30fb490d90f" />  

由指纹标识的客户端证书

<authentication-certificate thumbprint="CA06F56B258B7A0D4F2B05470939478651151984" />

在策略中设置的客户端证书(而不是从内置证书存储中检索到的证书)

<authentication-certificate body="@(context.Variables.GetValueOrDefault<byte[]>("byteCertificate"))" password="optional-certificate-password" />

有关使用策略的详细信息,请参阅: