Как вызвать cognito для входа на страницу при попытке получить доступ к ресурсу в API-шлюзе
Я пытаюсь настроить шлюз AWS API в нашей среде. Я создал шлюз API с ресурсом и пулом Cognito для аутентификации. Я создал приложение-клиент в Cognito и могу добавлять пользователей. Но мне не ясно, когда вызывать страницу входа при доступе к конечной точке через шлюз API. Прямо сейчас я передаю токен JWT в заголовок авторизации вручную для целей тестирования, но в реальном времени, когда я попадаю на конечную точку шлюза API, я хочу перенаправить на страницу регистрации / входа программным способом добавить заголовок аутентификации после проверки подлинности пользователя.
Не могли бы вы помочь мне понять, что мне здесь не хватает?
1 ответ
API - это бэкэнд-сервис, обычно вызываемый через интерфейсное приложение или другой бэкэнд-сервис. API не должен предполагать, что вызывающий абонент - это человек, использующий внешний интерфейс, и не должен предполагать, что внешний интерфейс - это веб-приложение, это может быть мобильное приложение, приложение для просмотра часов, приложение для ТВ и т. Д.
При этом ваш API не должен перенаправлять на страницу аутентификации пользователя.
Обычный рабочий процесс будет
- Клиенты подключаются к вашей веб-странице
- Код на веб-странице проверяет, аутентифицирован ли пользователь
- Когда пользователь не аутентифицирован, веб-страница перенаправляется в систему аутентификации.
- После аутентификации система аутентификации перенаправляет обратно на вашу веб-страницу
- Веб-страница собирает токен, сгенерированный системой аутентификации
- API вызова веб-страницы, включая токен в строках заголовка / запроса.
Веб-приложение можно заменить здесь мобильным приложением или другим типом интерфейса.
Проверьте пример здесь. https://github.com/dabit3/stockholm-loft-react-native
Это приложение React, использующее Amplify, демонстрирующее, как само приложение управляет перенаправлением на страницу аутентификации и как оно передает маркер аутентификации в API. Пример использует GraphQL API, но вы можете сделать что-то похожее с REST API.