Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure APIM到Azure函数相互身份验证_Azure_Azure Functions_Azure Api Management - Fatal编程技术网

Azure APIM到Azure函数相互身份验证

Azure APIM到Azure函数相互身份验证,azure,azure-functions,azure-api-management,Azure,Azure Functions,Azure Api Management,我创建了一个HttpTriggeredAzure函数,并设置了API管理来调用该函数。证书验证策略在APIM中设置,当APIM将调用转发到azure函数时,将传递函数的API密钥 这是否可以将客户端证书验证也从APIM放到function App,而不仅仅是API密钥?要启用客户端证书验证,您需要向function App资源定义添加属性。然后,您需要在函数代码中执行自己的证书验证 { “财产”:{ “clientCertEnabled”:true } } 检查此标头是否存在base64编码的

我创建了一个HttpTriggeredAzure函数,并设置了API管理来调用该函数。证书验证策略在APIM中设置,当APIM将调用转发到azure函数时,将传递函数的API密钥


这是否可以将客户端证书验证也从APIM放到function App,而不仅仅是API密钥?

要启用客户端证书验证,您需要向function App资源定义添加属性。然后,您需要在函数代码中执行自己的证书验证

{
“财产”:{
“clientCertEnabled”:true
}
}
检查此标头是否存在base64编码的客户端证书:

X-ARR-ClientCert
这里有一个警告,它可能不适用于消费计划,我没有抽出时间来测试它,如果它确实有效,请留下评论

或者,您可以使用客户端凭据流从Azure AD获取承载令牌(
client\u id
client\u secret
),并以这种方式调用该函数(启用EasyAuth以使其工作)。这里更大的警告也是一个问题,APIM能为您实现这一流程吗?我不知道

更新:
找到了一些东西,看起来使用出站策略是可行的,并向Azure AD发出原始POST请求,这很好。

添加到此回复中。在APIM方面,您将有两个选择。您可以获取它从context.Request.Certificates接收到的客户端证书,将其序列化到头并附加到后端请求。如果您想将原始客户端证书传递给function应用程序,但只允许进行证书验证,则该方法效果最佳,证书不会用于加密APIM和function app之间的通信。或者,您可以将另一个不同的客户端证书上载到APIM,并使用身份验证证书策略将其附加到后端请求,并在后端通信中用于加密。@VitaliyKurokhtin我的计划是上载新的客户端证书APIM中的证书,并将其转发给职能部门。