Перенаправить на встроенную страницу входа в пул пользователей AWS Cognito - PullRequest
0 голосов
/ 03 мая 2018

Я создал API в AWS API Gateway с 1 конечной точкой REST. Конечная точка REST вызывает функцию Lambda, написанную на C #. Я также создал пул пользователей AWS Cognito. Я пытаюсь интегрировать AWS Cognito с API-интерфейсом AWS Gateway, чтобы при попытке пользователя, не прошедшего проверку, вызвать REST API, API перенаправил их на встроенную страницу входа в AWS Cognito. В настоящее время я дошел до интеграции двух вместе, но когда я пытаюсь вызвать REST API, он просто отображает неавторизованное сообщение. Вместо того, чтобы отображать это сообщение, я хочу, чтобы оно перенаправляло на страницу входа в этот момент. Я прочитал много документов AWS и не знаю, что мне не хватает. Как бы я поступил так?

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Мне удалось решить эту проблему, указав пользовательский Ответ шлюза , который отправляет перенаправление 302 на страницу входа в случае НЕСАНКЦИОНИРОВАННОГО ответа от Cognito. В 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'"
  }
}
0 голосов
/ 04 мая 2018

Я нашел решение для этого. Я отказался от своего первоначального подхода и в итоге сделал это:

  1. Создание пула пользователей AWS Cognito и установка типа гранта Неявный в настройках клиента приложения (поскольку веб-сайт HTML / JS, о котором я упоминаю позже, является одностраничным приложением).
  2. Создана группа и пользователь в пуле пользователей для тестирования.
  3. Создан REST API в API Gateway, который использует авторизатор AWS Cognito.
  4. Настройка статического веб-сайта с помощью AWS S3. Статический веб-сайт содержит простой клиент HTML / JS, который использует библиотеку AWS Cognito Identity для аутентификации пользователей. Как только пользователь проходит аутентификацию, я получаю токен JWT из библиотеки. Затем, используя AJAX, я передаю этот токен API-интерфейсу REST выше.

Это завершает то, что я искал.

...