【问题标题】:API Gateway lambda authorizer custom status codeAPI Gateway lambda 授权方自定义状态码
【发布时间】:2018-01-15 04:16:17
【问题描述】:

我对 API Gateway 授权方和 lambda 函数有疑问。

我的场景如下:我在 AWS API Gateway 中有一个启用了授权的资源。授权者调用一个 lambda 函数,如果用户没有被授权,则将用户重定向到另一个 URL。

所以基本上我想自定义授权方返回 302 而不是 401/403/500 状态码。你知道这是否可能吗?

我知道在网关的集成阶段有一个 lambda 函数可以让我自定义响应。那么这个特殊场景呢?

谢谢。

【问题讨论】:

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


    【解决方案1】:

    自定义 API 网关授权方将 IAM 策略返回给 API 网关,允许或拒绝访问资源。

    Custom API Gateway Authorizer

    您可以在客户端尝试获取令牌(登录)时自定义响应,但在授权流程中,API 网关调用 Lambda 函数,提供从指定请求标头中提取的授权令牌,然后 lambda 函数返回一个IAM 政策。

    【讨论】:

    • 感谢您的澄清,但恐怕这并不能回答我的问题。阅读文档后,我的结论是您可以有 4 个流程:1. Lambda function returns a policy with Effect: Allow -> which is translated into forwarding the request2. Lambda function returns a policy with Effect: Deny -> translated into 4033. Lambda function returns callback('Unauthorised') -> translated into 4014. Default case callback('Error...') -> 500 InternalServerError. 所以没有办法返回一种可以转换为自定义错误的 JSON。
    【解决方案2】:

    您无法通过 Lambda Authorizer 更改状态代码或标头,但您可以通过 网关响应 来更改。

    1. 转到 API 网关
    2. 选择您要更改的 API
    3. 在左侧面板中,选择网关响应
    4. 选择您要覆盖的响应(例如UNAUTHORIZED
    5. 点击右侧面板上的编辑

    您现在可以根据需要重新定义响应状态、标头和正文。

    完整文档:https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-gateway-response-using-the-console.html

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 1970-01-01
      • 2017-05-18
      • 2018-10-01
      • 2016-11-30
      • 1970-01-01
      • 2018-01-28
      • 2019-03-04
      • 2018-04-17
      相关资源
      最近更新 更多