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?