【问题标题】:AWS Lambda / API Gateway - What is the best way to invoke a function that allows both authenticated and non authenticated requests?AWS Lambda / API Gateway - 调用允许经过身份验证和未经身份验证的请求的函数的最佳方式是什么?
【发布时间】:2020-11-13 21:01:18
【问题描述】:

目前,我希望未经过身份验证和经过身份验证(使用 Cognito 用户池)的用户都能访问的资源上有一个方法。据我了解,API 网关仅允许方法经过身份验证或未经身份验证,因此如果我使用标准 Cognito 用户池授权方,它将拒绝所有未经身份验证的用户的访问。我现在的想法是编写一个自定义 lambda 授权器,它验证传递的 ID 令牌并转发声明或允许未经身份验证的用户通过。有没有更简单的方法可以做到这一点?

【问题讨论】:

  • 您是否考虑过从客户那里处理这个问题?客户端必须将身份验证令牌转发给 API,如果不存在,只需将它们路由到“开放”端点,以相同的 Lambda 为目标。
  • 是的,但是我想避免任何额外的客户端逻辑,因为我计划在不久的将来向我的最终用户发布面向公众的 API。理想情况下,重定向由 API Gateway 处理,您似乎在下面提供了答案。谢谢
  • 这是有道理的。测试后提供一些反馈。

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


【解决方案1】:

您可以探索以下策略:设置两个端点:一个通过 Cognito,另一个允许未经身份验证的流量通过,但让它们以相同的 Lambda 函数为目标。更改经过身份验证的端点上的 API Gateway 响应以在缺少身份验证时重定向。然后,您将重定向指向未经身份验证的端点。

这是关于设置 API 网关响应的 AWS Guide

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 2017-05-10
    • 1970-01-01
    • 2021-05-26
    • 2016-01-17
    • 2021-07-05
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多