【问题标题】:How to authenticate with API Gateway?如何使用 API 网关进行身份验证?
【发布时间】:2019-05-30 06:38:28
【问题描述】:

我创建了一个使用计划,将其与默认阶段相关联并创建了一个 API 密钥。

然后我创建了指向我的 Lambda 函数的授权方,并将身份源设置为 header 并将其命名为 key

我禁用了授权捕获。

然后我去我的方法请求,我选择我的授权者并将API Key Required切换到true

我还在 HTTP 请求标头中添加了 key 标头。

我部署了 API,在使用 Postman 进行调用后,我得到了两种不同的响应:

  • 标题中没有key{ "message": "Unauthorized"}
  • 在标题中带有key{ "message": null}

每当我在标题中发布key 时,无论key 的内容是什么,我都会收到这样的响应。不知不觉我正在使用以前生成的 API 密钥。

我在这里缺少什么?

【问题讨论】:

  • 请发布您的授权函数代码
  • @varnit 看起来授权函数是我缺少的东西。该死的,我以为 AWS 正在处理它。谢谢

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


【解决方案1】:

AWS支持api网关的两种认证机制

  1. 使用认知用户池

  2. 使用自定义授权器

您必须使用其中之一,否则它将为示例授权函数返回 null,您可以参考 github 存储库中的示例

Custom Authorizer Api Gateway

【讨论】:

  • 我正在尝试为我的微服务(这只是一个简单的 lambda 函数)进行基本授权,因此只有少数我为其创建 API 密钥的人能够调用它。我并不是要为数百万用户提供 SaaS 服务,在这种情况下,一切都变得非常混乱。在这种情况下,正确的做法是什么?
  • 问题是你的问题非常广泛,你必须分享很多细节,直到我们得出一些结论,如果你在 aws 上使用任何服务,默认情况下它是无限可扩展的,因为这就是云计算是为和 api 网关支持授权和节流所以,据我了解你的问题,我认为 api 网关授权是一个很好的选择,但答案是非常可选的,有人可能有不同的偏好
  • 好的,我意识到我的问题是什么。我只想使用 API 密钥进行授权,因此通常根本不需要授权者。 API 密钥可以简单地在 HTTP 请求标头中传递。但是,我的情况稍微复杂一些,因此为我传递 API 密钥的唯一方法是 URL 中的查询,但这是一个完全不同的故事,可能是另一个问题。感谢您抽出宝贵时间回复!
猜你喜欢
  • 2016-12-25
  • 2021-03-03
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2016-08-30
  • 2019-08-22
  • 2013-06-21
  • 1970-01-01
相关资源
最近更新 更多