Аутентификация пользователей с Amazon Cognito

Развёртывание приложений на AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Писать собственный механизм входа?

  • Новому приложению нужна регистрация и вход
  • Команда начинает строить аутентификацию с нуля
  • Cognito уже делает это безопасно

Выбор управляемой аутентификации Amazon Cognito вместо создания собственного механизма входа

Развёртывание приложений на AWS

Пулы пользователей и пулы удостоверений

Пул пользователей Cognito как каталог пользователей, выдающий токены (слева); пул удостоверений, обменивающий подтверждённый токен на временные учётные данные AWS (в центре); сервисы AWS (справа)

  • Пул пользователей: управляемый каталог пользователей
  • Обрабатывает регистрацию, вход и выдаёт токены
  • Пул удостоверений: обменивает вход на учётные данные AWS
  • Используйте совместно: сначала аутентификация, затем доступ к AWS
Развёртывание приложений на AWS

Три токена Cognito

  • ID-токен: кто является пользователем (данные идентификации)
  • Токен доступа: что пользователь вправе вызывать
  • Токен обновления: получение новых токенов без повторного входа
  • Все три — JWT, которые можно декодировать и проверить

Три JWT-токена Cognito рядом: ID-токен с данными идентификации, токен доступа с областями разрешений API, токен обновления с пометкой «долгосрочный» для тихого обновления

Развёртывание приложений на AWS

Федеративные удостоверения

  • Федерация: вход через внешнего поставщика удостоверений
  • Социальные: Google, Facebook, Apple
  • Корпоративные: поставщики SAML и OIDC
  • Cognito управляет доверием и выдаёт собственные токены

Федерация Cognito: пользователь выбирает социального провайдера (Google, Facebook) или корпоративный SAML/OIDC-провайдер; Cognito проверяет внешний вход и выдаёт собственные стандартные токены

Развёртывание приложений на AWS

Cognito как авторизатор API Gateway

Авторизатор Cognito в API Gateway: клиент отправляет заголовок Authorization с токеном доступа; шлюз проверяет его относительно пула пользователей до запуска Lambda; недействительные токены отклоняются с кодом 401

  • API Gateway может использовать авторизатор Cognito
  • Клиент передаёт токен в заголовке Authorization
  • API Gateway проверяет токен до запуска бэкенда
  • Недействительные или просроченные токены отклоняются на границе
Развёртывание приложений на AWS

Типичный поток: от входа до вызова API

  • Пользователь выполняет вход в пул пользователей
  • Получает ID-токен, токен доступа и токен обновления
  • Клиент обращается к API Gateway с токеном доступа
  • Авторизатор Cognito проверяет токен, затем запускается бэкенд

Поток от входа до вызова API: пользователь входит в пул пользователей и получает токены; клиент отправляет токен доступа в API Gateway; авторизатор Cognito проверяет его; выполняется Lambda бэкенда

Развёртывание приложений на AWS

Типичные ошибки при работе с Cognito

  • Передача ID-токена вместо токена доступа
  • Путаница между пулом пользователей и пулом удостоверений
  • Попытка авторизовать доступ к AWS только через пул пользователей
  • Небезопасное хранение токенов на клиенте

Типичные ошибки при работе с Cognito: передача ID-токена вместо токена доступа в API, путаница между пулом пользователей и пулом удостоверений, небезопасное хранение токенов на клиенте

Развёртывание приложений на AWS

Давайте потренируемся!

Развёртывание приложений на AWS

Preparing Video For Download...