API管理以转发客户端证书

时间:2019-11-01 14:35:38

标签: azure-api-management

我正在尝试实现以下方案,但最终还是403响应。 客户端->发送证书A-> API管理->转发证书A->后端API(Azure Api应用)->对证书进行身份验证。

是否有一种方法可以配置API管理,以将传入的证书转发到后端API? 我对传入的请求尝试了各种转换策略,但是没有一个选项起作用。

请提出建议。

2 个答案:

答案 0 :(得分:0)

从技术上讲这是不可能的,因为客户证书的私钥永远不会通过电线传输。因此,APIM不可能使用它来认证后端。甚至更多,因为APIM中的客户端连接和后端连接之间没有亲缘关系。最好的选择是在自定义标头中发送客户端证书信息。您可以使用ser-header策略将其与API表达式一起设置为APIM级别,以从请求中提取客户端证书信息。

答案 1 :(得分:0)

使用新的身份验证证书策略(docs.microsoft.com),您可以将证书作为字节[]从单独的send-request响应变量中返回,并按以下方式使用它:

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

您可以使用以下代码段将密码存储为秘密的命名值,甚至从KeyVault中获取密码: github.com/Azure/api-management-policy-snippets