Autenticación de usuarios para aplicaciones web e iOS con AWS Cognito (Parte 1)

Publicado: 2022-03-10
Resumen rápido ↬ Tanto los desarrolladores como las organizaciones buscan una manera de tener más agilidad con las soluciones móviles. Hay un deseo de disminuir el tiempo desde la idea hasta la prueba. Como desarrollador, a menudo me encuentro con un obstáculo que puede ralentizar la construcción inicial de una hipótesis móvil: la gestión de usuarios.

A lo largo de los años, he construido al menos tres sistemas de administración de usuarios desde cero. Gran parte del enfoque puede basarse en un modelo, pero siempre hay algunos elementos clave que deben personalizarse para un cliente en particular. Esta es una preocupación suficiente para que haya surgido toda una categoría de servicios de administración, autenticación y autorización de usuarios para satisfacer esta necesidad. Los servicios como Auth0 tienen soluciones completas basadas en la gestión de usuarios e identidades con las que los desarrolladores pueden integrarse.

Un servicio que proporciona esta funcionalidad es Cognito de Amazon Web Services (AWS). Cognito es una herramienta que permite a los usuarios registrarse e iniciar sesión en aplicaciones web y móviles que cree. Además de esta funcionalidad, también permite el almacenamiento de datos de usuario fuera de línea y proporciona sincronización de estos datos. Como afirma Amazon, "Con Amazon Cognito, puede concentrarse en crear excelentes experiencias de aplicaciones en lugar de preocuparse por crear, proteger y escalar una solución para manejar la administración de usuarios, la autenticación y la sincronización entre dispositivos".

Subestimar los carruseles

Los carruseles realmente no se merecen la mala reputación que se han ganado a lo largo de los años. Pueden resultar muy efectivos y vienen en muchas formas y tamaños. Leer un artículo relacionado →

El año pasado, Amazon introdujo una adición a su servicio Cognito, grupos de usuarios personalizados. Esta funcionalidad ahora proporciona lo que yo y otros desarrolladores necesitamos para tener un sistema de administración de usuarios completo, personalizable y multiplataforma, con la flexibilidad necesaria para adaptarse a la mayoría de los casos de uso. Para entender por qué, debemos echar un vistazo rápido a qué es la gestión de usuarios y qué problemas resuelve.

¡Más después del salto! Continúe leyendo a continuación ↓
Cognito de AWS
Diagrama de grupos de usuarios personalizados de Cognito (Ver versión grande)

En este artículo, dedicaremos la mayor parte de nuestro tiempo a recorrer el proceso de configuración de un grupo de usuarios para nuestras necesidades. Luego, integraremos este grupo de usuarios con una aplicación de iOS y permitiremos que un usuario inicie sesión y obtenga los atributos asociados con su cuenta de usuario. Al final, tendremos una aplicación de demostración limitada, pero que maneja el núcleo de la administración de usuarios. Además, después de que esto esté en su lugar, habrá un artículo de seguimiento que profundizará un poco más en esto.

¿Qué necesitamos de la gestión de usuarios?

Si tiene una aplicación móvil o web, ¿qué necesita exactamente en términos de administración de usuarios? Si bien el inicio de sesión del usuario es probablemente lo primero en lo que pensaría, no podemos detenernos allí. Si queremos un sistema de administración de usuarios flexible que funcione para la mayoría de los casos de uso de aplicaciones web y móviles, debe tener la siguiente funcionalidad:

  • inicio de sesión con nombre de usuario y contraseña;
  • hash y almacenamiento seguro de contraseñas;
  • cambios de contraseña;
  • política y validación de contraseñas;
  • activadores del ciclo de vida del usuario (correo electrónico de bienvenida, correo electrónico de despedida, etc.);
  • atributos de usuario (nombre, apellido, etc.);
  • configuración requerida y atributos opcionales por usuario;
  • manejo de contraseñas olvidadas;
  • validación de número de teléfono a través de SMS;
  • verificacion de email;
  • Acceso API a puntos finales basado en permisos;
  • almacenamiento seguro de tokens de acceso en dispositivos móviles;
  • almacenamiento fuera de línea de atributos de usuario para dispositivos móviles;
  • sincronización de atributos de usuario para estados en línea y fuera de línea;
  • autenticación multifactor.

Si bien la administración de usuarios puede parecer al principio un sistema de inicio de sesión, la funcionalidad debe ir mucho más allá para que el sistema sea realmente lo suficientemente flexible para manejar la mayoría de los casos de uso. Esto claramente va mucho más allá de un simple nombre de usuario y contraseña.

Un elemento adicional debe mencionarse aquí: seguridad. Uno de los requisitos de cualquier sistema de administración de usuarios es que debe evaluarse continuamente la seguridad del sistema en su conjunto. Muchos sistemas de administración de usuarios personalizados tienen vulnerabilidades que simplemente no se han corregido. En el último año se han producido brechas de seguridad en los sistemas de gestión de usuarios de empresas como Dropbox, Dailymotion, Twitter y Yahoo. Si elige crear una solución personalizada, está obligado a proteger su sistema.

Ingrese a Amazon Cognito

Amazon Cognito es un servicio administrado que le permite integrar un sistema de administración de usuarios flexible y escalable en sus aplicaciones web y móviles. Cognito proporciona dos formas distintas de utilizar el servicio: identidades federadas, que permiten iniciar sesión a través de redes sociales como Facebook, y grupos de usuarios, que le brindan capacidades de administración de usuarios completamente personalizadas para una aplicación o conjunto de aplicaciones específico.

Las identidades federadas son excelentes si desea que los usuarios puedan iniciar sesión con Facebook (o Google, Amazon, etc.), pero esto significa que una parte del proceso de administración de usuarios se habrá subcontratado a Facebook. Si bien esto puede ser aceptable en algunos casos, es posible que los usuarios no deseen conectar su cuenta de Facebook a su aplicación. Además, es posible que desee administrar una mayor parte del ciclo de vida del usuario directamente y, para ello, las identidades federadas no son tan flexibles. A los efectos del artículo de hoy, nos centraremos en los grupos de usuarios porque brindan la flexibilidad necesaria para una plataforma sólida de administración de usuarios que se adaptaría a la mayoría de los casos de uso. De esta manera, tendrá un enfoque que se puede utilizar en la mayoría de los proyectos.

Debido a que este es un servicio de AWS, hay otros beneficios de usar Cognito. Cognito puede integrarse con API Gateway para proporcionar una forma sencilla de autorizar el acceso a la API en función de los tokens que se devuelven desde un inicio de sesión de Cognito. Además, si ya está aprovechando otros servicios de AWS para su aplicación móvil, puede utilizar su grupo de usuarios como proveedor de identidad para sus credenciales de AWS.

Al igual que con cualquier otro servicio de AWS, hay un costo involucrado. El precio de Cognito se basa en los usuarios activos mensuales (MAU). La buena noticia para la mayoría de los desarrolladores es que hay un nivel gratuito indefinido que tiene un límite de 50 000 MAU cuando se usa un grupo de usuarios personalizado. Si tiene una aplicación grande, esto le dará una gran cantidad de usuarios para probar un nuevo enfoque para la administración de usuarios. Sin embargo, sospecho que muchos de ustedes tienen experiencias que nunca superarán los 50.000 usuarios. En este caso, la administración de usuarios centrales será prácticamente gratuita. La única excepción a esto son otros servicios de AWS que aprovechará como parte del proceso de administración de usuarios, como Lambda, SNS y S3.

Creación de un grupo de usuarios

El primer paso para integrar un grupo de usuarios en su aplicación móvil es crear un grupo de usuarios de Cognito. Esto nos dará los valores de configuración necesarios para conectarnos a nuestra aplicación de ejemplo. Para crear un nuevo grupo de usuarios, siga el asistente provisto en la consola de Cognito de Amazon.

Veamos el proceso de creación de un grupo de usuarios. Debo advertirle que este es un proceso largo. En muchos sentidos, esto es algo bueno porque muestra áreas de flexibilidad. Sin embargo, querrá tomar una taza de café y abrocharse el cinturón para esta.

1. Nombre

El paso inicial para crear un grupo de usuarios implica establecer un nombre para su grupo de usuarios y seleccionar el enfoque que tomará para crear el grupo de usuarios. Puede revisar los valores predeterminados o "paso a paso" la configuración. Debido a que queremos tener un buen conocimiento práctico de cómo se configura el grupo de usuarios, elija la opción "Configuración paso a paso".

Paso 1 en la creación de grupos de usuarios
El paso inicial para crear un grupo de usuarios (Ver versión grande)

2. Atributos

La configuración de atributos requerirá un poco de reflexión. Para cada grupo de usuarios, deberá determinar qué atributos se almacenarán en el sistema y cuáles son necesarios. Debido a que el sistema hará cumplir los valores requeridos, no puede cambiar esto en el futuro. El mejor enfoque aquí es marcar solo los valores verdaderamente esenciales aquí como requeridos. Además, si desea que los usuarios puedan iniciar sesión con su dirección de correo electrónico, asegúrese de marcarla como un alias.

Si desea incluir valores personalizados, también deberá hacerlo aquí. Cada valor personalizado tendrá un tipo, reglas de validación opcionales y una opción para ser mutable (cambiable) o no mutable (inmutable). Hay un límite estricto de 25 atributos personalizados.

Finalmente, se debe hacer un punto aquí sobre los nombres de usuario. El valor de nombre de usuario para cada usuario es inmutable (no modificable). Esto significa que, en la mayoría de los casos, hacer que este valor se genere automáticamente tendría sentido. Es por eso que existe el valor de "nombre de usuario preferido". Si desea que los usuarios tengan un valor de nombre de usuario que puedan editar, simplemente marque el atributo "nombre de usuario preferido" como un alias. Si desea que los usuarios simplemente inicien sesión con su dirección de correo electrónico, asegúrese de marcar el atributo "correo electrónico" como obligatorio y como alias.

Para nuestra aplicación de demostración, elegí hacer obligatorios "correo electrónico", "nombre de pila" y "apellido".

Paso 2 en la creación de grupos de usuarios
Configuración de atributos de usuario para el grupo de usuarios (Ver versión grande)

3. Políticas

Después de configurar los atributos, podrá configurar las políticas para la cuenta. La primera política a configurar es la política de contraseñas. La política te permite configurar tanto la longitud como si requieres números, caracteres especiales, mayúsculas o minúsculas. Esta política se aplicará tanto a las contraseñas que ingresan los usuarios como a las contraseñas que los administradores asignan a los usuarios.

Las siguientes políticas se relacionan con el registro de usuarios. Para una aplicación pública, es probable que desee permitir que los usuarios se registren por sí mismos. Sin embargo, según el tipo de aplicación, es posible que desee restringir el registro y que el sistema sea solo por invitación. Además, tendrás que configurar la rapidez con la que caducan estas invitaciones si no se utilizan.

Para nuestra aplicación de demostración, elegí usar solo los valores predeterminados, con la excepción de que no quiero que los usuarios puedan registrarse por su cuenta. Con estos valores establecidos, podemos proceder a las verificaciones.

Paso 3 en la creación de grupos de usuarios
Configuración de políticas para el grupo de usuarios (Ver versión grande)

4. Verificaciones

El paso de verificación le permite configurar la autenticación multifactor, así como la verificación por correo electrónico y teléfono. Si bien esta funcionalidad es relativamente fácil de configurar en la consola, tenga en cuenta que deberá solicitar un aumento de gasto para AWS SNS si desea verificar los números de teléfono o utilizar la autenticación multifactor.

Para nuestra aplicación de demostración, elegí usar solo los valores predeterminados.

Paso 4 en la creación de grupos de usuarios
Configuración de verificaciones para el grupo de usuarios (Ver versión grande)

5. Personalizaciones de mensajes

Este paso le permite personalizar los mensajes de correo electrónico y SMS que enviará su grupo de usuarios, así como las direcciones de correo electrónico "de" y "responder a". Para el propósito de nuestra aplicación de demostración, dejaré los valores predeterminados aquí y continuaré.

Paso 5 en la creación de grupos de usuarios
Configuración de los mensajes de ciclo de vida para el grupo de usuarios (Ver versión grande)

6. Etiquetas

Si es nuevo en AWS, es posible que no necesite especificar ninguna etiqueta. Sin embargo, en caso de que su organización use AWS regularmente, las etiquetas brindan una forma de analizar el gasto y asignar permisos con IAM. Por ejemplo, algunas organizaciones especifican etiquetas por entorno (desarrollo, ensayo, producción) y por proyecto.

No importa lo que ingrese en este paso, no afectará nuestra aplicación de demostración.

Paso 6 en la creación de grupos de usuarios
Adición de etiquetas para el grupo de usuarios (Ver versión grande)

7. Dispositivos

El siguiente paso le permite definir si el grupo de usuarios recordará los dispositivos de su usuario. Este es un paso de seguridad adicional que le permite ver con qué dispositivos se ha iniciado sesión en una cuenta específica. Esto tiene un valor adicional cuando aprovecha la autenticación multifactor (MFA). Si se recuerda el dispositivo, puede optar por no solicitar un token MFA en cada inicio de sesión.

A los efectos de la aplicación de demostración, he optado por establecer el valor en "Siempre".

Paso 7 en la creación de grupos de usuarios
Configuración del manejo de dispositivos para el grupo de usuarios (Ver versión grande)

8. Clientes de aplicaciones

Para cada aplicación para la que desee utilizar el grupo de usuarios (como una aplicación de iOS, una aplicación web, una aplicación de Android, etc.), debe crear una aplicación. Sin embargo, puede regresar y crearlos después de que se haya creado el grupo de usuarios, por lo que no es necesario agregarlos todos todavía.

Cada aplicación tiene varios valores que puede configurar. Para esta aplicación de demostración, le daremos un nombre a la aplicación y luego dejaremos los valores predeterminados. A continuación, puede configurar qué atributos de usuario puede leer y escribir cada aplicación.

Paso 8 en la creación de grupos de usuarios
Configuración de aplicaciones cliente para el grupo de usuarios (Ver versión grande)

Puede establecer los valores que desee en este paso, siempre que la aplicación pueda leer y escribir en la dirección de correo electrónico, el apellido y el nombre de pila. Asegúrese de hacer clic en la opción "Crear cliente de aplicación" antes de continuar.

9. Desencadenantes

Con disparadores, puede usar las funciones de Lambda para personalizar completamente el proceso del ciclo de vida del usuario. Por ejemplo, si solo desea que los usuarios con una dirección de correo electrónico del dominio de su empresa puedan registrarse, puede agregar una función Lambda para el disparador "Preinscripción" para realizar esta validación y rechazar cualquier solicitud de registro que no pasa

Para nuestra aplicación de demostración, no agregaré ningún disparador.

Paso 9 en la creación de grupos de usuarios
Configuración de disparadores para el grupo de usuarios (Ver versión grande)

10. Revisión

Me doy cuenta de que esto podría haber parecido un proceso largo y arduo. Pero tenga en cuenta que cada paso en la creación de un grupo de usuarios tiene una flexibilidad que permite que la solución se adapte a más casos de uso. Y ahora las noticias que estabas esperando escuchar: Este es el último paso.

Simplemente revise las configuraciones para asegurarse de que las haya configurado correctamente para la aplicación de demostración. Desde esta pantalla, puede volver atrás y editar cualquiera de las configuraciones anteriores. Una vez que se crea el grupo de usuarios, algunos valores de configuración (como los atributos obligatorios) no se pueden cambiar.

Con su nuevo grupo de usuarios creado, ahora puede proceder a integrarlos en una aplicación iOS de muestra utilizando AWS SDK para iOS.

Paso 10 en la creación de grupos de usuarios
Revisión final del grupo de usuarios antes de la creación (Ver versión grande)

Configuración de su aplicación iOS para su grupo de usuarios

Creé una aplicación iOS de muestra que se integra con Cognito para permitir que el usuario inicie sesión, cierre sesión, ingrese su nombre y apellido y establezca una contraseña. Para esta demostración inicial, el registro de usuario no está incluido, por lo que usé la consola de Cognito para agregar un nuevo usuario para la prueba.

El código de esta aplicación se puede encontrar en mi repositorio de GitHub.

Configuración de dependencias

Esta aplicación utiliza CocoaPods para gestionar dependencias. En este punto, las únicas dependencias son las partes específicas del SDK de AWS iOS que se relacionan con los grupos de usuarios de Cognito.

(Una descripción completa de CocoaPods está más allá del alcance de este artículo, sin embargo, un recurso en el sitio web de CocoaPods lo ayudará a ponerse en marcha, en caso de que este concepto sea nuevo para usted).

El contenido del Podfile para esta aplicación se puede ver a continuación:

 source 'https://github.com/CocoaPods/Specs.git' platform :ios, '10.0' use_frameworks! target 'CognitoApplication' do pod 'AWSCore', '~> 2.5.5' pod 'AWSCognitoIdentityProvider', '~> 2.5.5' end

Suponiendo que CocoaPods está instalado en su máquina, puede ejecutar pod install y las dependencias necesarias se instalarán por usted.

Configuración del grupo de usuarios

El siguiente paso es incluir los valores para su grupo de usuarios y su aplicación cliente. La aplicación de demostración está configurada para usar un archivo, CognitoApplication/CognitoConfig.plist , del cual extraer esta información. Hay que definir cuatro valores:

  • region (cadena)
    Esta es la región en la que creó su grupo de usuarios. Debe ser el identificador de región estándar, como us-east-1 o ap-southeast-1 .
  • poolId (cadena)
    Este es el ID del grupo de usuarios que creó.
  • clientId de cliente (cadena)
    Este es el clientId de cliente configurado como parte de la aplicación que adjuntó al grupo de usuarios.
  • clientSecret (cadena)
    Este es el clientSecret que está configurado como parte de la aplicación que adjuntó al grupo de usuarios.

Con ese archivo y los valores adecuados en su lugar, se puede iniciar la aplicación de demostración. Si ocurre alguna excepción durante el inicio, asegúrese de haber incluido cada uno de los cuatro valores que se muestran a continuación y de que el archivo esté ubicado en el directorio correcto.

Configuración de plist en Xcode
Configuración del grupo de usuarios en Xcode con el archivo plist (Ver versión grande)

Integración de delegados de aplicaciones

El núcleo de la integración con Amazon Cognito ocurre dentro del AppDelegate de la aplicación. Nuestro primer paso es asegurarnos de que hemos configurado el registro y nos hemos conectado a nuestro grupo de usuarios. Como parte de ese proceso, asignaremos nuestro AppDelegate como delegado del grupo de usuarios. Para este ejemplo básico, podemos mantener esta lógica dentro de AppDelegate . Para proyectos más grandes, podría tener sentido manejar esto en otro lugar.

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // set up logging for AWS and Cognito AWSDDLog.sharedInstance.logLevel = .verbose AWSDDLog.add(AWSDDTTYLogger.sharedInstance) // set up Cognito config self.cognitoConfig = CognitoConfig() // set up Cognito setupCognitoUserPool() return true } func setupCognitoUserPool() { // we pull the needed values from the CognitoConfig object // this just pulls the values in from the plist let clientId:String = self.cognitoConfig!.getClientId() let poolId:String = self.cognitoConfig!.getPoolId() let clientSecret:String = self.cognitoConfig!.getClientSecret() let region:AWSRegionType = self.cognitoConfig!.getRegion() // we need to let Cognito know which region we plan to connect to let serviceConfiguration:AWSServiceConfiguration = AWSServiceConfiguration(region: region, credentialsProvider: nil) // we need to pass it the clientId and clientSecret from the app and the poolId for the user pool let cognitoConfiguration:AWSCognitoIdentityUserPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: clientId, clientSecret: clientSecret, poolId: poolId) AWSCognitoIdentityUserPool.register(with: serviceConfiguration, userPoolConfiguration: cognitoConfiguration, forKey: userPoolID) let pool:AWSCognitoIdentityUserPool = AppDelegate.defaultUserPool() // we need to set the AppDelegate as the user pool's delegate, which will get called when events occur pool.delegate = self }

Una vez realizada esta configuración, debemos configurar los métodos delegados para el grupo de usuarios. El protocolo que estamos implementando es AWSCognitoIdentityInteractiveAuthenticationDelegate . Se llamará a este delegado cada vez que el usuario necesite iniciar sesión, restablecer su contraseña o proporcionar un código de autenticación de múltiples factores o si necesitamos consultar al usuario si desea que se recuerde su dispositivo. Para nuestro ejemplo, solo necesitamos implementar los métodos startPasswordAuthentication y startNewPasswordRequired :

 extension AppDelegate: AWSCognitoIdentityInteractiveAuthenticationDelegate { // This method is called when we need to log into the application. // It will grab the view controller from the storyboard and present it. func startPasswordAuthentication() -> AWSCognitoIdentityPasswordAuthentication { if(self.navigationController == nil) { self.navigationController = self.window?.rootViewController as? UINavigationController } if(self.loginViewController == nil) { self.loginViewController = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController } DispatchQueue.main.async { if(self.loginViewController!.isViewLoaded || self.loginViewController!.view.window == nil) { self.navigationController?.present(self.loginViewController!, animated: true, completion: nil) } } return self.loginViewController! } // This method is called when we need to reset a password. // It will grab the view controller from the storyboard and present it. func startNewPasswordRequired() -> AWSCognitoIdentityNewPasswordRequired { if (self.resetPasswordViewController == nil) { self.resetPasswordViewController = self.storyboard?.instantiateViewController(withIdentifier: "ResetPasswordController") as? ResetPasswordViewController } DispatchQueue.main.async { if(self.resetPasswordViewController!.isViewLoaded || self.resetPasswordViewController!.view.window == nil) { self.navigationController?.present(self.resetPasswordViewController!, animated: true, completion: nil) } } return self.resetPasswordViewController! } }

Una cosa clave a tener en cuenta es que ambos métodos devuelven un controlador de vista que implementa un protocolo específico. Por ejemplo, LoginViewController implementa AWSCognitoIdentityPasswordAuthentication , que tiene un único método al que se llama con los parámetros necesarios para permitir que el usuario complete el proceso de inicio de sesión.

Flujo de autenticación

Con todas estas piezas en su lugar en la aplicación de demostración, ahora puede ver cómo funciona el proceso de inicio de sesión de principio a fin. La vista principal de la aplicación muestra el nombre de usuario y el nombre y apellido del usuario. Para que esto suceda, se llevan a cabo los siguientes pasos:

  1. En AppViewController , llamamos al método fetchUserAttributes en el método viewDidLoad . Si el usuario no ha iniciado sesión, esto activará el proceso de inicio de sesión.
  2. Se activará el método startPasswordAuthentication en AppDelegate . Este método carga el LoginViewController y lo presenta.
  3. El SDK de AWS llama al método getDetails de LoginViewController . Esto incluye un objeto que es una instancia de AWSTaskCompletionSource , que podemos usar para permitir que el usuario intente iniciar sesión.
  4. Cuando el usuario presiona el botón "Iniciar sesión", pasamos las credenciales de inicio de sesión a ese objeto. Esto luego llamará al método didCompleteStepWithError , y podemos manejar el resultado en consecuencia. Si no hay ningún error, podemos descartar el controlador de vista.
  5. Si creamos el usuario en la consola, tendremos otro paso que manejar aquí. Debido a que le dimos al usuario una contraseña temporal, deberá establecer una más permanente. Además, debido a que establecemos el nombre de pila y el apellido como parámetros obligatorios, también debemos permitir que el usuario los ingrese. AWS SDK lo detectará y llamará al método startNewPasswordRequired en AppDelegate . Esto presentará ResetPasswordViewController y establecerá su instancia de AWSTaskCompletionSource .
  6. El ResetPasswordViewController funciona casi de manera idéntica al LoginViewController . Simplemente necesitamos pedirle al usuario los valores correctos y luego enviar esos valores. Una vez que este proceso se completa con éxito, descartamos el controlador de vista.
  7. Una vez que se haya completado todo el proceso de inicio de sesión, el SDK almacenará de forma segura los tokens devueltos por Cognito. Luego, finalmente recuperaremos los detalles del usuario, y podemos usarlos para completar el AppViewController con el nombre de usuario, el nombre de pila y el apellido del usuario.

La aplicación de trabajo con autenticación funcionando.
La aplicación de muestra funcional, que muestra el nombre de usuario y los metadatos

Conclusión

Si bien el proceso de configuración del grupo de usuarios puede tener varios pasos, esos pasos son fáciles de navegar. Además, la cantidad de configuración posible debería darle la confianza de que puede admitir la mayoría de los casos de uso. En mi trabajo diario en Universal Mind, he trabajado con varios clientes que están trasladando sus aplicaciones existentes para aprovechar las capacidades que proporciona Cognito para la gestión de usuarios.

Independientemente de si necesita implementar un sistema de gestión de usuarios con regularidad, esta es una herramienta que todo desarrollador web y móvil debería tener en su caja de herramientas . En el próximo artículo de esta serie, comenzaremos a explorar un poco más las capacidades de Cognito mediante la implementación de una aplicación de demostración más completa que implementa más de los casos de uso comunes de administración de usuarios.

Con un poco de práctica, puede ir e impresionar a todos sus amigos configurando una nueva aplicación que satisfaga todos estos casos de uso de administración de usuarios en un día. Eso es bastante bueno para un día de trabajo.

Enlaces y recursos

  • Amazon Cognito
  • “Recursos para desarrolladores”, Amazon Cognito
  • SDK móvil de AWS
  • "Tutorial de CocoaPods para Swift: Primeros pasos", Joshua Greene, raywenderlich.com