【发布时间】:2018-10-18 03:00:04
【问题描述】:
我创建了一个 HTTPTriggered azure 函数,并设置了 API 管理来调用该函数。证书验证策略在 APIM 中设置,当 APIM 将调用转发到 azure 函数时,函数的 API-key 将被传递。
这是否可以将客户端证书验证也从 APIM 放到功能应用程序而不是 API 密钥?
【问题讨论】:
标签: azure azure-functions azure-api-management
我创建了一个 HTTPTriggered azure 函数,并设置了 API 管理来调用该函数。证书验证策略在 APIM 中设置,当 APIM 将调用转发到 azure 函数时,函数的 API-key 将被传递。
这是否可以将客户端证书验证也从 APIM 放到功能应用程序而不是 API 密钥?
【问题讨论】:
标签: azure azure-functions azure-api-management
您需要将属性添加到函数应用资源定义为described here 以启用客户端证书身份验证。然后,您需要在函数代码中进行自己的证书验证。
{
"properties": {
"clientCertEnabled": true
}
}
检查此标头是否有 base64 编码的客户端证书:
X-ARR-ClientCert
这里有一个警告,它可能不适用于 Consumption 计划,我没有测试它,如果它有效,请发表评论。
或者,您可以使用客户端凭据流(client_id 和 client_secret)从 Azure AD 获取承载令牌,并以这种方式调用函数(启用 EasyAuth 以使其工作)。这里更大的警告也是一个问题,APIM 可以为你做这个流程吗?我不知道。
找到了 here 的东西,看起来可以使用出站策略并向 Azure AD 发出原始 POST 请求,这很好,since that's what that flow is really about。
【讨论】: