Я настраиваю приложение с различными внешними интерфейсами (мобильными и веб-приложениями) и одним API-интерфейсом, работающим на Lambda и получающим доступ через AWS API Gateway.
Поскольку я планирую использовать Cognito для аутентификации иавторизовать пользователей, я установил авторизатор Cognito User Pool на своем API-шлюзе и несколько методов API.
При такой архитектуре кажется логичным, что мои приложения (например, приложение iOS или Vue.js)клиентские приложения с точки зрения OAuth, а моим бэкэндом API Gateway является сервер ресурсов.Исходя из этого поста форума Auth0 , кажется очевидным, что я должен поэтому использовать токен ID в своем клиентском приложении и передать токен доступа для авторизации ресурсов моего шлюза API.
Когда я нажимаюКонечная точка Cognito /oauth2/authorize
, чтобы получить код доступа и использовать этот код для достижения конечной точки /oauth2/token
, получает 3 токена - токен доступа, токен идентификатора и токен обновления.Пока все хорошо, так как у меня должно быть то, что мне нужно.
Вот где я столкнулся с трудностями - используя функцию тестирования на консоли авторизатора API Gateway Cognito User Pool, я могу вставить токен IDи это проходит (декодирование токена на экране).Но когда я вставляю токен доступа, я получаю 401 - unauthorized
.
В моей настройке Cognito я включил только поток Authorization Code Grant
с областями действия email
и openid
(похоже, этоминимально допустимый Cognito, так как я получаю сообщение об ошибке, пытаясь сохранить без хотя бы этих отметок).
Нужно ли добавлять какие-то определенные области, чтобы API-шлюз авторизовал запрос с кодом доступа?Если да, то где они настроены?
Или я что-то упустил?Разрешит ли API-шлюз использовать только токен ID с авторизатором пула пользователей Cognito?