AWS Cognito: я использовал его для стартапа и больше не повторил бы этой ошибки
I Used AWS Cognito for a Startup. I Wouldn't Do It Again

Разработчик рассказывает, как попытка сэкономить на аутентификации с помощью AWS Cognito обернулась кошмаром: запутанная документация, ломающие изменения в Amplify v6, невозможность локальной разработки, ограниченная кастомизация и необратимые ошибки конфигурации. Он делится уроками и советует сначала проверить инструмент на нетривиальном прототипе.
Это не обновление. Это заложничество.
- wilkystyle
Чтение документации Cognito похоже на то, как будто кто-то взял три отдельных руководства, засунул их в блендер, а затем приправил устаревшими ответами со Stack Overflow для вкуса.
Это мой опыт практически со всей документацией AWS. Она почти всегда либо (1) слишком высокоуровневая, чтобы быть реально полезной, либо (2) слишком многословная, с огромным объемом лишней информации, которую нужно просеять и отбросить, прежде чем доберешься до того, что пытаешься понять.
Вот лишь один пример: недавно мне нужно было связать аккаунт AWS Partner Central с аккаунтом AWS Management, и процесс и документация были мучительно сложными: https://docs.aws.amazon.com/partner-central/latest/getting-s...
- solatic
В следующий раз я выбираю инструмент, исходя из опыта разработчика, а не из удобства интеграции с AWS. Время, потерянное на отладку проблем Cognito, могло бы оплатить несколько лет платного провайдера аутентификации.
Сколько платных провайдеров аутентификации позволяют экспортировать хэши паролей пользователей, чтобы можно было легко мигрировать к другому вендору, если захочется?
Вся проблема с аутентификацией в том, что (а) экраны входа показываются неаутентифицированным пользователям, что является супермножеством, включающим атакующих, которые будут делать всё — от DDoS до специально созданного вредоносного ввода, чтобы попытаться заполучить секреты пользователей, так что действительно хочется выбрать что-то, что уже работает в больших производственных масштабах и со всеми производственными шрамами, и (б) необходимость использовать управляемого вендора сильно конфликтует с локальной разработкой, независимостью от вендора, переносимостью данных и другими добрыми инженерными практиками (TM).
Конечно, AWS Cognito — отстой. Во многих отношениях продукт кажется застрявшим. Идти на компромиссы, чтобы выпустить продукт, работающий и стабильный, — это отстой. Но, честно говоря, если вы не собираетесь предпочесть (б) над (а) (и бывают моменты, когда это стоит делать, особенно для интранет-приложений за файрволом, которые не особо подвержены таким атакам) и выбрать что-то вроде Keycloak, вы можете сделать намного хуже, чем Cognito (содрогание, Okta, содрогание).
- patwolf
Мой опыт с Cognito точно совпадает с опытом автора. Раньше я в основном использовал Auth0, но мы перешли на Cognito для нового проекта, потому что это было дешевле.
Не нравится, что адреса электронной почты чувствительны к регистру, и теперь вы хотите это изменить? Извините, вам придется создать новый пул пользователей с нуля — миграция невозможна.
- mannyv
Я помню, как разговаривал с командой Cognito о сбросе пароля и спорил с ними, что возможность установить пароль — это обязательная функция. Они говорили: «Нет, зачем вам когда-либо не проходить через процедуру сброса? Это проблема безопасности». Затем, конечно, они добавили это через несколько недель, потому что каждому администратору нужно это делать. Так что в какой-то момент над этим работала куча людей, у которых не было никакого операционного опыта.
Два преимущества Cognito: (1) он позволяет войти в сервис без каких-либо локальных учетных данных, и (2) эта идентичность Cognito позволяет предоставлять доступ к ресурсам AWS. Возможно, сейчас это можно сделать, но множество решений по-прежнему требуют ключ на устройстве... что является очевидной проблемой безопасности.
Кроме того, использование собственного бэкенда для аутентификации упрощало управление, потому что ваша аутентификация не была заперта внутри Cognito.
- cldcntrl
У Cognito есть реальные шероховатости, и эта статья на самом деле не упоминает ни одну из них.
Если вы когда-нибудь пытались реализовать, скажем, рабочую интеграцию SAML через Cognito, вы знаете, насколько запутанным является этот процесс. Мне приходилось работать с командой Cognito, чтобы исправить реальные критические ошибки.
Определенно не самый отполированный сервис AWS, но работоспособный, если знаешь все тонкости.
- nater5000
Я не спорю, что AWS Cognito — не самый простой сервис аутентификации для работы, но как только разберешься, он работает так же хорошо, как и другие.
Я испытал те же самые боли (и многие другие), которые описал автор. Но дело в том, что как только вы испытали эти боли, вы знаете, как с ними справляться. В программировании нужно просто разобраться один раз, и всё готово.
Не могу сказать, что я масштабировал использование Cognito до чего-то огромного, но могу сказать, что держать всё в AWS стоит тех хлопот (по крайней мере, в зависимости от контекста). Cognito предоставляет множество вариантов реальной настройки (хостируемый интерфейс годится только для первоначального тестирования, потом его выбрасываете). И, конечно, LLM справляются с Cognito так же легко, как и с любым другим сервисом аутентификации. У меня не было возможности использовать LLM, когда я настраивал Cognito, но он по-прежнему мой выбор для аутентификации, и Claude на нем не спотыкается.
- mikigraf
Даже не начинайте про бэкапы или другие базовые функции, которые ожидаешь от такого сервиса. AWS должен либо совершить приобретение (Auth0 или меньшую компанию, например Wristband?) и перестроить сервис, либо просто убить его. Вместо этого у нас есть критический сервис, на который полагаются предприятия, застрявший в подвешенном состоянии...
- dabinat
Лично я никогда бы не строил свой бизнес на технологии, привязанной к конкретному вендору, с которой трудно уйти, если этот вендор предоставляет плохой сервис или резко поднимает цену.