Identidad como servicio (IDaaS) — AWS Cognito & Okta

Lucas Lopez
6 min readApr 20, 2018

--

Los aspectos de seguridad y en particular el manejo de identidades es un desafío importante cuando desarrollamos aplicaciones web o mobile. Es algo difícil y que siempre puede ser un riesgo al desarrollarlo nosotros mismos. Lo bueno es que hay varios proveedores de gestión de identidades — Identity-As-A-Service — que resuelven estos aspectos por nosotros. La mayoría están basados en dos estándares de la industria altamente adoptados por muchas compañías digitales — OAuth 2.0 y OpenID Connect.

Muchos de los servicios son parte de soluciones Cloud más amplias, como son Cognito de Amazon Web Services y Active Directory B2C de Microsoft Azure. También hay soluciones brindadas por compañías que se dedican solamente a este tipo de servicio, como son Auth0 y Okta. Igualmente Google y Facebook utilizan estos estándares para ofrecer accesos a sus plataformas y otras aplicaciones.

Antes de ver los ejemplos y como utilizarlos, comparemos uno de cada grupo. Aunque AWS Cognito y Okta ofrecen los mismos servicios básicos en relación con gestión de identidades, en otros aspectos las ofertas son muy distintas. Los precios y las características difieren significativamente.

Precio

Empecemos por una de las variables más importantes, el costo de utilizar cada uno de estos servicios.

Tanto AWS Cognito como Okta ofrecen una versión gratuita de su servicio para evaluar y/o utilizar en aplicaciones con una cantidad “reducida” de usuarios activos mensuales

Y cuando hablamos de una cantidad “reducida”, realmente estamos hablando de menos de 50000 usuarios activos mensuales en el caso de AWS Cognito y de 7000 usuarios activos mensuales en el caso de Okta. Números para nada despreciables para una aplicación.

Claramente el servicio de Amazon es más económico si lo importante es gestionar una gran cantidad de usuarios activos. Si se tienen 100000 usuarios activos mensuales, el precio de AWS Cognito es de $ 0,00550 por usuario por mes — 275 dólares mensuales por los 50000 usuarios extras al Free Tier.

En el caso de Okta, la versión Free solo permite 7000 usuarios activos mensuales. Si se necesitan más usuarios, hay que subscribirse a la versión Developer. Aunque esta versión ofrece más funcionalidades como la personalización de emails y Multi-Factor Authentication, es necesario pagar por todos los usuarios, empezando por $20 hasta 1000 usuarios activos. Este precio se incrementa en relación con la cantidad de usuarios hasta 1000 dólares mensuales por 50000 usuarios mensuales.

Características

Pero no sólo el precio es importante. Cada proveedor ofrece distintas características y funcionalidades que puede influir en el momento de determinar cual es la mejor opción para cada aplicación.

Además del precio, una de las mayores ventajas de AWS Cognito es la integración nativa con otros servicios de Amazon Web Services como el servicio de base de datos noSQL DynamoDB. Esta integración permite el uso de identidades web federadas para controlar el acceso a los datos guardados en DynamoDB. Los usuarios sólo pueden acceder a datos que les correspondan. Aunque este mecanismo se puede implementar utilizando otros proveedores de identidad como ser Google, Facebook o incluso Okta, implica que la aplicación tiene que utilizar uno de estos servicios además de AWS Cognito Federated Identities.

Otro beneficio de AWS Cognito es la capacidad de extender la lógica por medio de disparadores o triggers. Cuando suceden eventos particulares relacionados con las cuentas de usuario, como ser la autenticación o la confirmación, AWS Cognito permite disparar la ejecución de una función de AWS Lambda. Esto brinda mayor flexibilidad al servicio. Un ejemplo muy común es la creación de un registro en AWS DynamoDB luego de que el usuario confirme la cuenta. Aunque Lambda y DynamoDB están incluidos en el Free Tier, estas ejecuciones y datos pueden generar costos asociados pero no directamente relacionados con AWS Cognito. Algo similar ocurre con la utilización de Amazon Simple Notification Service (SNS) para el envío de notificaciones y mensajes SMS principalmente para Multi-Factor Authentication.

En comparación, aunque Okta sólo ofrece el servicio de gestión de identidades y no es una plataforma completa de servicios, es uno de los lideres en el 2017 Magic Quadrant for Access Management de Gartner. Su oferta va más allá de lo que ofrece AWS Cognito. Igualmente, hay dos aspectos que se destacan al comparar las versiones gratuitas. Okta ofrece un dashboard con mayor detalles sobre los eventos como ser la cantidad de accesos erróneos así como el acceso a un log más detallado incluido como parte del servicio. Y en el caso de que la aplicación sea multi-lenguaje, Okta permite personalizar los contenidos de los emails y SMS que envía la plataforma. Okta soporta 25 diferentes idiomas por defecto, incluyendo inglés, portugués y español. Para lograr lo mismo en AWS Cognito es necesario utilizar otros servicios de AWS que pueden generar costos adicionales.

Documentación

Una documentación clara y ejemplos en relación con la utilización del servicio es muy importante, especialmente para la integración en nuestras aplicaciones. La documentación de AWS Cognito es muy extensa y está disponible en inglés, pero también en español. Obviamente, no sólo incluye la documentación especifica al servicio sino que también incluye documentación de cómo integrar AWS Cognito con otros servicios de Amazon Web Services.

Como referencia, en StackOverflow, AWS Cognito tiene más de 2000 preguntas tagged.

AWS Cognito en StackOverflow

La documentación de Okta es menos extensa que la AWS Cognito pero no por eso menos completa. Por ejemplo, además de los detalles propios de Okta, la documentación incluye explicaciones sobre los detalles y flujos tanto de OAuth 2.0 como de OpenID Connect. Algo muy interesante en la documentación de Okta es el Authentication Quickstart Guides donde explican en forma fácil y sencilla como integrar Okta en el stack de una aplicación tanto en el cliente como en el servidor.

Pero la adopción de Okta es menor que la de AWS Cognito. Tomando nuevamente de referencia StackOverflow, en el caso de Okta, el número de preguntas tagged es mucho menor, alrededor de 700.

Comentarios Finales

Aunque Okta — e igualmente Auth0 — tiene precios más elevados que AWS Cognito, la adopción de la plataforma correcta depende de las necesidades particulares de cada aplicación y compañía. En grandes cantidades de usuarios sin grandes requerimientos de funcionalidades especiales, AWS Cognito es una buena alternativa. Pero en el momento que se necesitan integraciones con otros sistemas, el uso extensivo de SAML, AD/LDAP y otras características de tipo Enterprise, la evaluación de Okta adquiere mayor sentido.

En el próximo capítulo, vamos a ver como es una integración de estos dos servicios utilizando OIDC y ASP.Net core 2.0

Gracias Totales por leer!!!

Nota final

Si el precio es una variable importante, existe otra opción para considerar en el análisis. Google Firebase Authentication. Es un producto tiene una oferta gratuita que parece muy interesante. Debería probarlo para entenderlo mejor. Espero tener la oportunidad y el tiempo en el futuro.

Todas las opiniones expresadas son mías y no representan opiniones de ninguna entidad con la que he estado, estoy o estaré afiliado.

All views expressed are my own and do not represent opinions of any entity whatsoever with which I have been, am now, or will be affiliated

--

--

Lucas Lopez

Avid Technologist at heart, a lifetime of projects, experience in software development and project management areas.