AWS API Gateway:如果响应未授权,则添加标头

Posted

技术标签:

【中文标题】AWS API Gateway:如果响应未授权,则添加标头【英文标题】:AWS API Gateway: Add header if response is Unauthorized 【发布时间】:2017-05-18 23:25:58 【问题描述】:

我在 AWS 中设置了一个 API 网关,它使用自定义授权方来实施 OAuth2 流程。它工作正常。当用户未获得授权时,他们会收到 401 Authorized 响应。这也是正确的,但我想添加一个标头,为客户端提供可以获取令牌的端点。类似AuthorizeUrl: url

如何将此标头添加到我的响应中?

【问题讨论】:

【参考方案1】:

很遗憾,这是不可能的,但它在我们的积压工作中。我知道当客户收到 401 但您不能告诉他们如何授权时,这真的没有意义。

我没有 ETA 可提供,但我会在功能请求中添加 +1。

【讨论】:

哦,我明白了。感谢您的回答!【参考方案2】:

AWS 去年添加了此功能。 Refer to this

手动操作:

    转到 API Gateway 控制台中的“响应标头”。 选择未经授权的 (401) 在“响应标头”下方添加 AuthorizeUrl 和 url 保存 API 并将其部署到某个阶段。

要将其添加到 Cloudformation,请参阅类似的 answer。

您也可以通过添加以下 sn-p(yaml) 将其添加到 swagger:

x-amazon-apigateway-gateway-responses:
  UNAUTHORIZED:
    statusCode: 401
    responseParameters:
      gatewayresponse.header.AuthorizeUrl:"url"
    responseTemplates:
      application/json: "\"message\":$context.error.messageString"

【讨论】:

【参考方案3】:

在 API Gateway 控制台中,转到“方法响应”界面。您可以添加 HTTP 状态 401。在“响应标头”中添加您的自定义“AuthorizeUrl”标头。然后在“集成响应”界面中,您可以为该标头添加您想要的值。

【讨论】:

我也试过了。但在我的情况下,它不起作用,因为“代理集成无法配置为转换响应”,因此集成响应不可编辑

以上是关于AWS API Gateway:如果响应未授权,则添加标头的主要内容,如果未能解决你的问题,请参考以下文章

响应未定义 - aws-api-gateway-client

如何为 AWS API Gateway 自定义授权方配置 CORS?

使用 API Key 或 Authorizer 授权 AWS API Gateway

AWS API Gateway 集成响应

AWS API Gateway Cognito 授权模拟

使用授权方后 AWS Amplify API Gateway cors 错误:aws_iam