Usé AWS Cognito para una startup. No lo volvería a hacer
I Used AWS Cognito for a Startup. I Wouldn't Do It Again

Tres días después de implementar la autenticación con AWS Cognito, el autor se dio cuenta de que algo andaba mal: los flujos de restablecimiento de contraseña redirigían a lugares equivocados y la documentación era un laberinto. A pesar de su experiencia previa con Auth0, Firebase y sistemas JWT personalizados, Cognito le causó dolores de cabeza por su documentación confusa, cambios de API en Amplify v6 que rompieron su código, dificultades para el desarrollo local y opciones de personalización limitadas. Su error de configuración de atributos casi lo lleva a tirar la laptop por la ventana. Su consejo: construye un concepto de prueba antes de comprometerte.
Eso no es una actualización. Es una situación de rehenes.
- wilkystyle
> Leer los docs de Cognito se siente como si alguien hubiera tomado tres manuales separados, los hubiera metido en una licuadora, y luego hubiera espolvoreado algunas respuestas desactualizadas de Stack Overflow para darle sabor.
Esta es mi experiencia con básicamente toda la documentación de AWS. Casi siempre es o (1) demasiado de alto nivel para ser de alguna utilidad real, o (2) demasiado verbosa, con un volumen masivo de información superflua que necesito parsear y descartar antes de llegar a lo que estoy tratando de averiguar.
Como un ejemplo, recientemente necesité vincular una cuenta de AWS Partner Central con una cuenta de AWS Management, y el proceso y la documentación eran dolorosamente complicados: https://docs.aws.amazon.com/partner-central/latest/getting-s...
- solatic
> La próxima vez, elegiré una herramienta basándome primero en la experiencia del desarrollador, no en la conveniencia de la integración con servicios de AWS. El tiempo que perdimos depurando problemas de Cognito podría haber pagado varios años de un proveedor de autenticación de pago.
¿Cuántos proveedores de autenticación de pago te permiten exportar los hashes de contraseñas de los usuarios para que puedas migrar sin problemas a otro proveedor, si quieres?
Todo el problema con la autenticación es que (a) las pantallas de inicio de sesión se muestran a usuarios no autenticados, que son un superconjunto que incluye atacantes, que harán de todo, desde DDoS hasta entradas maliciosas diseñadas, para intentar robar secretos de usuarios, por lo que realmente quieres elegir algo que ya esté funcionando a gran escala de producción y con todas las cicatrices de batalla de producción, y (b) esa necesidad de ir con un proveedor gestionado está muy en tensión con el desarrollo local, la independencia del proveedor, la portabilidad de datos y otras Buenas Prácticas de Ingeniería (TM).
Claro, AWS Cognito apesta. En muchos sentidos, el producto se siente estancado. Hacer concesiones para sacar cosas a producción, que funcionen y sean estables apesta. Pero honestamente, a menos que vayas a preferir (b) sobre (a) (y hay momentos para hacerlo, en particular con aplicaciones de intranet detrás de un firewall que realmente no son susceptibles a ese tipo de ataques) y elijas algo como Keycloak, podrías hacerlo mucho peor que Cognito (estremecimiento, Okta, estremecimiento).
- patwolf
Mi experiencia con Cognito coincide exactamente con la del autor. Principalmente usé Auth0 en el pasado, pero cambiamos a Cognito para un nuevo proyecto porque sería más barato.
No me gusta que las direcciones de correo electrónico distingan entre mayúsculas y minúsculas, y ahora quieres cambiar eso? Lo siento, tienes que crear un nuevo user pool desde cero: no hay forma de migrar.
- mannyv
Recuerdo hablar con el equipo de Cognito sobre el restablecimiento de contraseña y discutir con ellos que poder establecer una contraseña era una característica requerida. Ellos decían "no, ¿por qué nunca tendrías que no pasar por el flujo de restablecimiento? Eso es un problema de seguridad". Luego, por supuesto, lo agregaron unas semanas después porque todo administrador necesita hacer eso. Así que en algún momento tenían un montón de gente trabajando en ello que tenía cero experiencia operativa.
Dos beneficios de Cognito son (1) que te permite iniciar sesión en un servicio sin tener ninguna credencial localmente, y (2) que la identidad de Cognito te permite proporcionar acceso a recursos de AWS. Probablemente puedas hacer eso ahora, pero muchas soluciones aún requieren una clave en el dispositivo... lo cual es un problema de seguridad obvio.
Además, usar tu propio backend para la autenticación hacía más fácil gestionar las cosas porque tu autenticación no estaba atrapada dentro de Cognito.
- cldcntrl
Cognito tiene bordes ásperos reales, este artículo realmente no menciona ninguno de ellos.
Si alguna vez has intentado implementar, digamos, una integración SAML funcional a través de Cognito, sabrás lo oscuro que es el flujo. He tenido que trabajar con el equipo de Cognito para que arreglen errores realmente bloqueantes.
Definitivamente no es el servicio más pulido de AWS, pero es manejable si conoces los entresijos.
- nater5000
No estoy en desacuerdo con que AWS Cognito no sea el servicio de autenticación más fácil de trabajar, pero una vez que lo resuelves, funciona tan bien como los demás.
He experimentado exactamente los mismos dolores (y muchos más) que describió el autor. Pero la cosa es que una vez que has experimentado esos dolores, sabes cómo lidiar con ellos. En software, solo tienes que resolverlo una vez y luego está hecho.
No puedo decir que haya escalado el uso de Cognito a algo masivo, pero puedo decir que mantener todo en AWS vale la pena (al menos dependiendo del contexto). Cognito proporciona muchas opciones de personalización real (la UI alojada solo es buena para pruebas iniciales, luego deséchala). Y, por supuesto, los LLMs pueden lidiar con Cognito tan fácilmente como con cualquier otro servicio de autenticación. No tuve el lujo de usar LLMs cuando configuré Cognito, pero sigue siendo mi opción preferida para autenticación y Claude no tropieza con ello.
- mikigraf
Ni siquiera me hagas empezar con las copias de seguridad u otras funcionalidades básicas que uno esperaría de un servicio como este. AWS debería hacer una adquisición (Auth0 o una empresa más pequeña como Wristband?) y reconstruir el servicio, o simplemente matarlo. En cambio, tenemos un servicio crítico del que dependen las empresas atrapado en el limbo...
- dabinat
Personalmente, nunca construiría mi negocio sobre una tecnología atada a un proveedor específico que dificulte cambiar si dicho proveedor ofrece un servicio deficiente o sube masivamente el precio.