AWS Cognito: управление пользователями и аутентификацией
AWS Cognito предлагает надежное и масштабируемое решение для управления пользователями и аутентификации для веб- и мобильных приложений, не требуя собственного бэкенда идентификации. Сервис интегрирует внешних поставщиков идентичности и предоставляет токены, соответствующие стандартам, для API. Кроме того он позволяет обменивать токены идентичности на временные AWS-учетные данные для прямого доступа к сервисам AWS, таким как S3 и DynamoDB.
Основы AWS Cognito
AWS Cognito состоит из двух основных компонентов: пулов пользователей и пулов идентификации.
Пулы пользователей являются каталогом пользователей и одним OpenID-Connect-kompatibler Identity Provider. Они аутентифицируют пользователей, выдают ID-токены, токены доступа и обновления и интегрируют социальные или корпоративные IdP через OIDC или SAML.
Пулы идентификации (также называемые федеративными идентичностями) предоставляют на основе этих идентичностей kurzlebige AWS-Credentials. Это также доступно для гостей, которые ещё не вошли в систему.
Управляемая страница входа, ранее известная как „Hosted UI“ и ныне называемая „Managed Login“, предоставляет
standardkonforme OAuth-Endpunkte готова, включая
/oauth2/authorize, /oauth2/token, /logout а также OIDC Discovery- OIDC Discovery- и JWKS-Ressourcen.
Для одностраничных приложений (SPAs) имеет центральное значение, так как предотвращает возможность злоупотребления перехваченными кодами.
Authorization-Code-Flow mit PKCE имеет центральное значение, поскольку предотвращает злоупотребление перехваченными кодами.
Выданные токены являются JSON Web Tokens (JWTs). Access-токены содержат области действия (scopes) и группы для авторизации API, в то время как ID-токены содержат данные профиля. Подписи этих токенов можно проверить по JWKS-URL соответствующего пула.
Актуальное состояние и функции
Срок действия токенов можно точно настроить для каждого клиентского приложения. Access- и ID-токены могут быть настроены между 5 Minuten und 1 Tag могут настраиваться. Refresh-токены по умолчанию действуют 30 дней, но их можно настроить между 60 Minuten und 10 Jahren которые можно настроить.
Страницы управляемого входа поддерживают PKCE standardmäßig. Он Logout-Endpunkt завершает сессию браузера и перенаправляет на настроенные URL-адреса выхода.

Quelle: aws.amazon.com
Обзор основных функций Amazon Cognito.
Для индивидуального фирменного оформления и использования собственного домена можно настроить Custom Domain mit einem ACM-Zertifikat (Сертификат в us-east-1 обязателен). Затем вход выполняется через собственную поддомену.
API могут быть защищены либо напрямую на API Gateway с использованием JWT-Authorizer защищены напрямую на API Gateway там, где Cognito выступает в роли OIDC-issuer, или через собственный (Lambda-) авторизатор.
Эти adaptive/risikobasierte Anmeldung („Threat Protection“) могут классифицировать подозрительные попытки входа, требовать многофакторную аутентификацию (MFA) или блокировать доступ.
Для многоарендных приложений AWS документирует различные схемы, начиная с одного Single-Pool-Ansatz bis hin zu einem Pool pro Tenant, включая изоляцию через группы/роли и области действия (scopes).
Интеграция в приложениях Next.js упрощается за счет Cognito-Provider von NextAuth упрощена. Сессии управляются через JWT/куки, а Edge-Миддлвер защищает маршруты.
Контекст и мотивация
Современным приложениям необходим центральный слой идентификации, который поддерживает отраслевые стандарты, такие как OIDC/OAuth2/SAML поддерживает, адресует риски через MFA и адаптивную аутентификацию и одновременно обеспечивает интеграцию собственных поставщиков идентичности. Для SPAs это PKCE unverzichtbar, поскольку секреты клиента в браузере хранить нельзя безопасно; Cognito реализует PKCE полностью.
Со стороны API прямой JWT-Abgleich am API Gateway привлекательный. Он обеспечивает минимальную задержку, четкое разделение между аутентификацией (AuthN) и авторизацией (AuthZ) и избегает дополнительного раунд-трипа к хранилищу пользователей.
Соответствие требованиям и резидентство данных — ещё одни важные аспекты. Пулы пользователей хранят данные профиля локально. Необязательные функции, такие как Pinpoint-Analytics, могут отправлять данные в другие регионы, что важно для команд из ЕС/CH и besondere Beachtung erfordert.
Quelle: YouTube
Это видео показывает SAML-Föderation mit Cognito, что полезно для визуального понимания сценариев на основе IdP и единого выхода (Single-Logout).
Практическое применение и рекомендации
Тот, кто разрабатывает SPA или Next.js-приложение, должен выбрать Authorization Code Flow mit PKCE выбрать. Токены следует хранить на стороне сервера в httpOnly-кookie или использовать механизм управления сессиями фреймворка. Проверку JWT следует всегда выполнять против JWKS-URL соответствующего пула. JWKS-Endpunkt des Pools проводиться.

Quelle: economize.cloud
Типичный процесс аутентификации с AWS Cognito.
API должны проверять области действий (scopes) и использовать JWT-Authorizer использовать, чтобы отделить аутентификацию и авторизацию и снизить задержки.
Для мультиарендных приложений рекомендуется начать с одного пула, дополненного атрибутами арендаторов или областями. При строгих требованиях изоляции можно рассмотреть пул на каждого арендатора. Single-Pool-Ansatz for multi-tenant applications, a pool per tenant could be considered.
В области операций рекомендуется, CloudTrail und CloudWatch-Metriken активировать, мониторить квоты и образцы входа, а при необходимости — использовать Threat Protection использовать.
В отношении комплаенса региональные потоки данных (например, через аналитические инструменты) должны быть проверены и задокументированы для команд ЕС/CH, особенно с учетом regionalen Datenüberlegungen.
Quelle: YouTube
Этот пошаговый обзор помогает понять Authorization-Code-Flow mit PKCE позволяет понять сквозной процесс.
Открытые вопросы и задачи
Разработка срока жизни токенов (TTL) и их ротации требует тщательного балансирования, чтобы найти баланс между UX и уровнем безопасности, не принуждать приложения к постоянному обновлению. AWS рекомендует использовать токены примерно на какое-то время и обновлять их только после. 75 Prozent ihrer Lebenszeit использовать и обновлять только после.
Возникает вопрос, насколько далеко изоляция арендаторов через группы/области действия (Scopes) достаточна, прежде чем раздел пула по арендаторам станет необходимым по организационным и затратным причинам. AWS описывает оба пути, но реалистичные пороги являются anwendungsabhängig.

Quelle: aws.amazon.com
Интеграция Cognito с внешними поставщиками идентичности и службами AWS.
Какие данные согласно требованиям комплаенса могут покинуть регион, если активны опциональные функции такие как Pinpoint? Здесь должны быть regionalen Hinweise проверены и задокументированы Opt-ins.
Согласованность единого выхода между всеми подключенными IdPs — ещё одна проблема. Для SAML существуют SLO-Unterstützung, однако детали реализации зависят от IdP.
Итог: AWS Cognito предлагает прочное, стандартное по базису ядро аутентификации с ясными точками расширения: Managed Login с PKCE, чистую верификацию JWT и опциональную федерацию к социальным или корпоративным IdPs. На практике критично выбрать подходящий поток для приложения, сознательно ограничивать срок действия токенов и строго авторизовывать API-слой через scopes. При планировании многоарендной архитектуры следует заранее принимать решения об изоляционных границах и операционных метриках. Компоненты есть, решение по дизайну лежит на пользователе.