【问题标题】:How to authenticate requests in AWS API Gateway securely with a web app如何使用 Web 应用程序安全地验证 AWS API Gateway 中的请求
【发布时间】:2019-07-17 13:31:33
【问题描述】:

我正在尝试创建一个可以授权我的 JWT 的 AWS API Gateway 端点。

自定义 (Lambda) 授权方无法做到这一点,因为它们需要一个签名的授权标头,该标头需要 IAM 用户的 AWS 访问密钥和密钥。不受信任的来源,如网络应用程序,无法保密,因此我们无法将访问密钥捆绑到客户端应用程序中。因此,此自定义授权者不适用于 Web 应用。

在 API Gateway 中实现 JWT 身份验证的唯一方法是将身份验证逻辑实现到 Lambda 函数本身中。

有人不同意吗?是否存在安全漏洞?这是滥用 API Gateway 吗?

herehere 之前提出过这个问题,但从未得到充分回答。

【问题讨论】:

  • 只需创建您的自定义 lambda 授权者,按照您的方式验证您的 jwt 令牌,按照您的规则允许或拒绝访问客户端方法。 nodejs 示例github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/…
  • @hoangdv - 但我仍然需要一个签名的 Auth 标头,对吧?
  • 您可以将任何内容推送到Authorization 标头以通过此检查。

标签: amazon-web-services aws-lambda jwt aws-api-gateway


【解决方案1】:

请在 API 网关中使用 Authorizer 来实现这一点。 API 网关中可能有多个授权者。

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-to-api.html

【讨论】:

  • 如何解决我对使用 IAM 访问密钥进行签名的担忧?
  • 对于 UI 开发,我使用 AWS Amplify,默认情况下,它具有用于使用 Cognito 用户池、联合、SignV4 签名 URL 功能、SRP 等进行身份验证的库。
  • 我的问题是,虽然我已经正确设置了 Lambda Authorizer,但我未能重新部署到任何阶段。哎呀!感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2015-12-04
  • 2018-07-20
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 2021-06-06
  • 2021-10-25
  • 2021-09-05
相关资源
最近更新 更多