【问题标题】:Can I use client certificate generated in API Gateway to validate at Lambda?我可以使用 API Gateway 中生成的客户端证书在 Lambda 进行验证吗?
【发布时间】:2018-04-15 04:14:46
【问题描述】:

我在 API Gateway 中创建了自己的客户端证书。我希望我的 lambda 在处理来自 API Gateway 的请求之前进行验证(配置后端以验证 API)。

API Gateway 允许我们将证书复制到剪贴板。我们可以将其保存为 var 或文件,以便在 Nodejs Lambda 函数中读取,进行身份验证并继续进行。

我们有例子吗?

【问题讨论】:

    标签: amazon-web-services authentication certificate aws-lambda aws-api-gateway


    【解决方案1】:

    API Gateway 正在通过 AWS API 中的 Lambda Invoke 方法调用您的 AWS Lambda 函数。您的 Lambda 函数不是 Web 服务器,因此它不会接收来自 API Gateway 的直接 HTTPS 请求,因此不会接收 HTTPS 客户端证书。

    无论如何,我都会质疑这样做的必要性。您的 API Gateway 应该使用 IAM 角色来调用 Lambda 函数。这是您用来确保只有 API Gateway 有权调用您的 Lambda 函数的机制。客户端证书适用于在 API 网关后面运行且不使用 IAM 进行身份验证的 Web 服务器。

    【讨论】:

    • 马克-好的。那么配置你的后端 api 是什么意思呢? docs.aws.amazon.com/apigateway/latest/developerguide/…
    • 这意味着如果您将 API Gateway 指向 EC2 上的后端服务器或类似的东西,那么您可以配置服务器软件来验证客户端证书。这是一种与您用于触发 Lambda 函数执行的 API Gateway 集成方法完全不同的方法。
    • 客户端证书用于HTTP 集成类型,需要锁定公共HTTP API,以便只有API 网关可以调用它。您不需要锁定 AWS Lambda 的方法,因为 Lambda 函数本身不是公共的,并且您的 IAM 权限确保只有 API Gateway 可以调用它。请注意,在您链接的页面顶部如何显示“这允许您的 HTTP 后端控制并仅接受来自 Amazon API Gateway 的请求”。它仅适用于 HTTP 后端,不适用于 Lambda。
    • @Mark B 我认为这个问题(如果我没看错的话)更倾向于使用 Lambda 授权器通过 API 网关实现 mTLS(相互 TLS)。在这种情况下,客户端程序(Web 或移动应用程序)将使用客户端证书调用 API,然后需要由 Lambda 授权方验证(除了传统的 API 密钥之外)。令人惊讶的是,AWS API Gateway 仍然不支持客户端的 mTLS。它仅支持您所说的后端证书验证。
    • @Annjawn 我明白你在说什么,我同意亚马逊应该添加到 API Gateway 中的一个很好的功能,但这不是这个具体问题的内容。至少,这不是问题中引用的功能设计的目的。 API Gateway 允许您在 API 和 HTTP 后端之间创建证书并执行证书验证,这是问题中提到的功能。
    猜你喜欢
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2018-02-15
    • 1970-01-01
    • 2019-01-07
    • 2012-01-10
    • 1970-01-01
    相关资源
    最近更新 更多