![AWS API Gateway Lambda 授权者 + 客户端证书](https://linux22.com/image/735629/AWS%20API%20Gateway%20Lambda%20%E6%8E%88%E6%9D%83%E8%80%85%20%2B%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AF%81%E4%B9%A6.png)
我正在评估使用客户端证书来提高我正在开发的应用程序的安全性。这一切都在 AWS 上运行,并通过附加了 Lambda 授权者的 API 网关传递。
AWS 文档指出 API Gateway 不支持通过客户端证书进行身份验证,但允许您在后端进行身份验证,但文档中并未提及使用 Lambda 授权器时会发生什么。
我首先认为它不会起作用,因为 API Gateway 无法看到标头。但由于 API Gateway 处理证书的创建和存储,因此它至少可以窥视数据流内部以获取标头数据,从而使 Lambda Authorizer 能够正常工作。
就我而言,我想将客户端证书添加到我已经存在的基于令牌的授权中。
可以实现此设置,或者只能通过将令牌验证移至后端来完成。
答案1
更新:API 网关现在支持 mTLS! https://aws.amazon.com/blogs/compute/introducing-mutual-tls-authentication-for-amazon-api-gateway/
旧答案:
客户端证书验证发生在 TLS 握手期间. Lambda 授权器处理 HTTP 请求示例输入。所以你无法进行真正的相互认证。你可以做一些自定义解决方案,在标头中塞入一些签名信息(比如 sigv4),但这并不是我们在讨论相互 TLS 时真正要讨论的内容。