Как вызвать вход в систему cognito при попытке доступа к ресурсу в API-шлюзе

67
7

Я пытаюсь настроить шлюз AWS API в нашей среде. Я создал шлюз API с ресурсом и пулом Cognito для аутентификации. Я создал приложение-клиент в Cognito и могу добавлять пользователей. Но мне не ясно, когда вызывать страницу входа при доступе к конечной точке через шлюз API. Прямо сейчас я передаю токен JWT в заголовок авторизации вручную для целей тестирования, но в реальном времени, когда я попадаю на конечную точку шлюза API, я хочу перенаправить на страницу регистрации/входа программным способом добавить заголовок аутентификации после проверки подлинности пользователя.

Не могли бы вы помочь мне понять, что мне здесь не хватает?

спросил(а) 2019-01-28T11:34:00+03:00 1 год, 5 месяцев назад
1
Решение
78

API - это бэкэнд-сервис, обычно вызываемый через интерфейсное приложение или другой бэкэнд-сервис. API не должен предполагать, что вызывающий абонент - это человек, использующий внешний интерфейс, и не должен предполагать, что внешний интерфейс - это веб-приложение, это может быть мобильное приложение, приложение для просмотра часов, приложение для ТВ и т.д.

При этом ваш API не должен перенаправлять на страницу аутентификации пользователя.

Нормальный рабочий процесс будет

Клиенты подключаются к вашей веб-странице Код на веб-странице проверяет, аутентифицирован ли пользователь Когда пользователь не аутентифицирован, веб-страница перенаправляется в систему аутентификации. После аутентификации система аутентификации перенаправляет обратно на вашу веб-страницу Веб-страница собирает токен, сгенерированный системой аутентификации API вызова веб-страницы, включая токен в строках заголовка/запроса.

Вы можете заменить веб-приложение здесь мобильным приложением или другим типом интерфейса.

Проверьте пример здесь. https://github.com/dabit3/stockholm-loft-react-native

Это приложение React, использующее Amplify, демонстрирующее, как само приложение управляет перенаправлением на страницу аутентификации и как оно передает маркер аутентификации в API. В примере используется API GraphQL, но вы можете сделать что-то похожее с REST API.

ответил(а) 2019-01-28T12:01:00+03:00 1 год, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема