【问题标题】:Azure APIM to azure function mutual authenticationAzure APIM 到 azure 函数相互身份验证
【发布时间】:2018-10-18 03:00:04
【问题描述】:

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

这是否可以将客户端证书验证也从 APIM 放到功能应用程序而不是 API 密钥?

【问题讨论】:

    标签: azure azure-functions azure-api-management


    【解决方案1】:

    您需要将属性添加到函数应用资源定义为described here 以启用客户端证书身份验证。然后,您需要在函数代码中进行自己的证书验证。

    {
        "properties": {
            "clientCertEnabled": true
        }
    }
    

    检查此标头是否有 base64 编码的客户端证书:

    X-ARR-ClientCert
    

    这里有一个警告,它可能不适用于 Consumption 计划,我没有测试它,如果它有效,请发表评论。

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

    更新:

    找到了 here 的东西,看起来可以使用出站策略并向 Azure AD 发出原始 POST 请求,这很好,since that's what that flow is really about

    【讨论】:

    • 添加到此回复。在 APIM 方面,您将有几个选择。您可以获取它从 context.Request.Certificates 接收的客户端证书,将其序列化为标头并附加到后端请求。如果您想将原始客户端证书传递给函数应用程序,那效果最好,但只允许证书验证,证书不会用于加密 APIM 和函数应用程序之间的通信。
    • 或者,您可以将另一个不同的客户端证书上传到 APIM,并使用身份验证证书策略将其附加到后端请求并用于后端通信中的加密。
    • @VitaliyKurokhtin 这就是我的计划是在 APIM 中上传新证书并将其转发到功能。
    猜你喜欢
    • 2019-07-17
    • 2020-10-08
    • 1970-01-01
    • 2021-08-14
    • 2022-07-06
    • 2012-06-06
    • 2019-07-02
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多