Автентифікація кінцевих користувачів за допомогою Amazon Cognito

Розгортання застосунків в AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Створювати власний логін?

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

Вибір керованої автентифікації Amazon Cognito замість власного логіна

Розгортання застосунків в AWS

User pools vs identity pools

Cognito User Pool як каталог користувачів, що видає токени, ліворуч; Identity Pool обмінює перевірений токен на тимчасові облікові дані AWS посередині; сервіси AWS праворуч

  • User pool: керований каталог кінцевих користувачів
  • Обробляє реєстрацію, вхід і видає tokens
  • Identity pool: обмінює логін на AWS credentials
  • Використовуйте разом: автентифікуйте, потім надавайте доступ до AWS
Розгортання застосунків в AWS

Три токени Cognito

  • ID token: хто користувач (ідентифікаційні твердження)
  • Access token: що користувач може викликати
  • Refresh token: отримати нові токени без повторного входу
  • Усі три — це JWTs, які можна декодувати й перевірити

Три токени Cognito JWT поруч: ID token з ідентифікаційними твердженнями, access token з скоупами дозволів API, refresh token позначений як довготривалий для тихого поновлення

Розгортання застосунків в AWS

Федеративна ідентичність

  • Federation: вхід через зовнішнього постачальника ідентичності
  • Соціальні: Google, Facebook, Apple
  • Корпоративні: постачальники SAML і OIDC
  • Cognito посередничає довіру та видає власні токени

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

Розгортання застосунків в AWS

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

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

  • API Gateway може використовувати Cognito authorizer
  • Клієнт надсилає свій токен у Authorization header
  • API Gateway перевіряє токен до запуску бекенду
  • Недійсні або прострочені токени відхиляються на периметрі
Розгортання застосунків в AWS

Типовий потік: вхід → виклик API

  • Користувач входить до user pool
  • Отримує ID, access і refresh токени
  • Клієнт викликає API Gateway з access token
  • Cognito authorizer перевіряє, потім запускається бекенд

Потік від входу до виклику API: користувач входить до user pool і отримує токени; клієнт надсилає access token до API Gateway; Cognito authorizer перевіряє його; виконується бекенд Lambda

Розгортання застосунків в AWS

Поширені помилки з Cognito

  • Надсилання ID token там, де потрібен access token
  • Плутанина між user pools та identity pools
  • Спроба авторизувати AWS access лише через user pool
  • Небезпечне зберігання токенів на клієнті

Поширені помилки з Cognito: надсилання ID token до API замість access token, плутанина між user pool та identity pool, і небезпечне зберігання токенів на клієнті

Розгортання застосунків в AWS

Давайте потренуємось!

Розгортання застосунків в AWS

Preparing Video For Download...