我在AWS API Gateway中创建了一个带有1个REST端点的API。 REST端点调用用C#编写的Lambda函数。我还创建了一个AWS Cognito用户池。我要做的是将AWS Cognito与AWS Gateway API集成,以便当未经身份验证的用户尝试调用REST API时,API会将它们重定向到AWS Cognito的内置登录页面。目前,我已经将2集成在一起但是当我尝试调用REST API时,它只是显示未经授权的消息。我希望它在那时重定向到登录页面,而不是显示该消息。我已经阅读了很多AWS文档,并且不知道我缺少什么。我该怎么做呢?
答案 0 :(得分:1)
我找到了解决方法。我放弃了原来的方法,最终做到了这一点:
这实现了我的目标。
答案 1 :(得分:0)
我能够通过指定自定义Gateway Response来解决该问题,如果来自Cognito的响应未经授权,则将302重定向发送到登录页面。在Terraform中,它看起来像这样:
resource "aws_api_gateway_gateway_response" "unauthorized" {
rest_api_id = "${aws_api_gateway_rest_api.apiGateway.id}"
status_code = "302"
response_type = "UNAUTHORIZED"
response_templates = {
"application/json" = "{'message':$context.error.messageString}"
}
response_parameters = {
"gatewayresponse.header.Location" = "'https://example.com/login'"
}
}