CloudFront Подписанные файлы cookie сохраняют состояние сеанса для доступа к шлюзу API

Я использую следующий стек технологий для своего веб-приложения

  • CloudFront в качестве прокси и CDN
  • S3 или CloudFront для обслуживания приложения AngularJS
  • Происхождение APIGateway к CloudFront для REST API
  • Cognito UserPools с CognitoAuthorizer для аутентификации в шлюзе API

Для хранения пользовательского сеанса веб-приложения я обычно сохраняю выпущенный JWT из Cognito в файле cookie на стороне клиента, в HTML5 LocalStorage или SessionStorage.

Однако мне любопытно знать, что подписанные файлы cookie CloudFront могут предоставлять состояние сеанса для веб-приложений. Я надеюсь использовать Signed Cookies для хранения JWT и Edge Lambda для сопоставления Signed Cookie с заголовком авторизации для аутентификации шлюза API. Мне интересно знать

  1. Будет ли работать CloudFront Signed Cookies для хранения JWT?
  2. Это хороший подход для хранения состояния сеанса в подписанных файлах cookie для веб-приложений?
  3. Если да, то каковы лучшие практики вокруг этого? Я не уверен, что использование Edge Lambda - правильный подход.

1 ответ

Решение

CloudFront Signed Cookies не имеет способа хранения пользовательских данных. По этой причине сохранение AWS Cognito UserPool, выданного id_token, в подписанном файле cookie невозможно. Поэтому сомнительный подход не возможно продолжить.

Альтернативный подход

Вместо этого маршрут шлюза API входа в систему может установить как SignedCookie, так и отдельный файл cookie для хранения токена JWT, где файл cookie проверяется в предварительно настроенной пограничной лямбде и добавляется в заголовок авторизации перед отправкой запроса в API-шлюз.

Другие вопросы по тегам