如何在 AWS API 网关中自定义 Cognito 用户池授权方的未授权 401 JSON 响应
How to customize cognito user pool authorizer's Unauthorized 401 JSON response in AWS API Gateway
我在 AWS API 网关中添加了 Cognito 用户池作为授权者。
然后我用 id_token 测试了这个授权者并且它工作正常。
我在 Cognito 用户池中为用户 registration/login 使用了 lambda 函数。
现在我的问题是如何在 id_token 过期或 Cognito 授权方无法验证当前用户时自定义错误响应。目前我只收到
{
"message": "Unauthorized"
}
或
{
"message": "The incoming token has expired"
}
与401响应
您可以在 API 网关中使用 Gateway Responses 来修改返回客户端的 HTTP 状态代码和响应。
默认情况下,对于您所描述的场景,响应是"Unauthorized",状态码是401。要改变这个-
- 转到左栏中的 "Gateway Responses" 以获得您的 API。
- Select "Unauthorized" 然后点击右上角的 "Edit"。
- 单击"application/json: under "响应模板。
- 在 "Response body template" 部分将消息修改为
{"message":"Your custom message"}
(请参见下面的屏幕截图)。
- 部署 API 并等待一分钟让更改传播。
我在 AWS API 网关中添加了 Cognito 用户池作为授权者。 然后我用 id_token 测试了这个授权者并且它工作正常。 我在 Cognito 用户池中为用户 registration/login 使用了 lambda 函数。
现在我的问题是如何在 id_token 过期或 Cognito 授权方无法验证当前用户时自定义错误响应。目前我只收到
{
"message": "Unauthorized"
}
或
{
"message": "The incoming token has expired"
}
与401响应
您可以在 API 网关中使用 Gateway Responses 来修改返回客户端的 HTTP 状态代码和响应。
默认情况下,对于您所描述的场景,响应是"Unauthorized",状态码是401。要改变这个-
- 转到左栏中的 "Gateway Responses" 以获得您的 API。
- Select "Unauthorized" 然后点击右上角的 "Edit"。
- 单击"application/json: under "响应模板。
- 在 "Response body template" 部分将消息修改为
{"message":"Your custom message"}
(请参见下面的屏幕截图)。 - 部署 API 并等待一分钟让更改传播。