适用于:所有 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"/>
属性
| 属性 | 说明 | 需要 | 默认 |
|---|---|---|---|
| 指纹 | 客户端证书的指纹。 允许使用策略表达式。 |
thumbprint 或 certificate-id 可以存在。 |
空值 |
| certificate-id | 证书资源名称。 允许使用策略表达式。 |
thumbprint 或 certificate-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" />
相关策略
相关内容
有关使用策略的详细信息,请参阅:
- 教程:转换和保护 API
- 策略参考,其中提供了策略语句及其设置的完整列表
- 策略表达式
- 设置或编辑策略
- 重复使用策略配置
- 策略片段存储库
- 策略示例存储库
- Azure API 管理策略工具包