Uso de Amazon Cognito para aplicaciones móviles
La mejor forma de utilizar las federaciones de OIDC es emplear Amazon Cognito
Para permitir que la aplicación móvil pueda acceder a sus recursos de AWS, Adele registra primero un ID de desarrollador con el proveedor de identidad elegido. También configura la aplicación con cada uno de estos proveedores. En su Cuenta de AWS que contiene el bucket de Amazon S3 y la tabla de DynamoDB para el juego, Adele utiliza Amazon Cognito para crear roles de IAM que definen de forma precisa los permisos que necesita el juego. Si está utilizando un IdP de OIDC, también crea una entidad de proveedor de identidades de OIDC de IAM para establecer una relación de confianza entre un grupo de identidades de Amazon Cognito de la Cuenta de AWS y el IdP.
En el código de aplicación, Adele llama a la interfaz de inicio de sesión para el proveedor de identidad que ha configurado anteriormente. El proveedor de identidad gestiona todos los detalles que permiten iniciar sesión al usuario y la aplicación obtiene un token de acceso OAuth o un token de ID de OIDC del proveedor. La aplicación de Adele puede intercambiar esta información de autenticación por un conjunto de credenciales de seguridad temporales que constan de un ID de clave de acceso de AWS, una clave de acceso secreta y un token de sesión. A continuación, la aplicación puede utilizar estas credenciales para obtener acceso a los servicios web que ofrece AWS. La aplicación está limitada por los permisos que están definidos en el rol que asume.
La imagen siguiente muestra un flujo simplificado de su funcionamiento, utilizando Login with Amazon como proveedor de identidad. En el paso 2, la aplicación también puede utilizar Facebook, Google o cualquier IdP compatible con OIDC, pero no se muestra aquí.
-
Un cliente inicia la aplicación en un dispositivo móvil. La aplicación solicita al usuario que inicie la sesión.
-
La aplicación utiliza los recursos de Login with Amazon para aceptar las credenciales del usuario.
-
La aplicación utiliza operaciones
GetId
yGetCredentialsForIdentity
de la API de Amazon Cognito para intercambiar el token de ID de Login with Amazon por un token de Amazon Cognito. Amazon Cognito, que se ha configurado para confiar en su proyecto de Login with Amazon, genera un token que intercambia por credenciales de sesión temporales con AWS STS. -
La aplicación recibe credenciales de seguridad temporales de Amazon Cognito. La aplicación también puede usar el flujo de trabajo básico (clásico) de Amazon Cognito para recuperar tokens de AWS STS con
AssumeRoleWithWebIdentity
. Para obtener más información acerca del modo en que ayuda a la autenticación de usuarios, consulte Identity pools (federated identities) authentication flow (Flujo de autenticación de grupo de identidades [federadas]) en la Amazon Cognito Developer Guide (Guía para desarrolladores de Amazon Cognito). -
La aplicación puede utilizar las credenciales de seguridad temporales para acceder a los recursos de AWS que necesita la aplicación para funcionar. El rol asociado con las credenciales de seguridad temporales y sus políticas asignadas determina a qué se puede acceder.
Utilice el siguiente proceso para configurar la aplicación para utilizar Amazon Cognito para autenticar los usuarios y otorgar a la aplicación acceso a los recursos de AWS. Para conocer los pasos específicos en este escenario, consulte la documentación de Amazon Cognito.
-
(Opcional) Regístrese como desarrollador en Login with Amazon, Facebook, Google o cualquier otro IdP compatible con OpenID Connect (OIDC) y configure una o varias aplicaciones con el proveedor. Este paso es opcional, ya que Amazon Cognito también admite acceso sin autenticar (como invitado) para los usuarios.
-
Diríjase a Amazon Cognito de AWS Management Console
. Utilice el asistente de Amazon Cognito para crear un grupo de identidades, que es un contenedor que Amazon Cognito utiliza para mantener las identidades de los usuarios finales organizados para las aplicaciones. Puede compartir grupos de identidades entre aplicaciones. Al configurar un grupo de identidades, Amazon Cognito crea uno o dos roles de IAM (uno para las identidades autenticadas y otro para las identidades "invitadas" sin autenticar) que definen los permisos para los usuarios de Amazon Cognito. -
Integre AWS
Amplify con su aplicación e importe los archivos necesarios para usar Amazon Cognito. -
Cree una instancia del proveedor de credenciales de Amazon Cognito, transmitiendo el ID de grupo de identidades, el número de Cuenta de AWS y el nombre de recurso de Amazon (ARN) de los roles que asocia con el grupo de identidades. El asistente de Amazon Cognito en la AWS Management Console proporciona código de muestra para ayudarle a comenzar.
-
Cuando la aplicación accede a un recurso de AWS, transfiere la instancia de credenciales de proveedor al objeto de cliente, que a su vez transmite las credenciales de seguridad temporales al cliente. Los permisos de las credenciales se basan en el rol o roles que ha definido previamente.
Para más información, consulte los siguientes temas:
-
Sign in (Android)
(Iniciar sesión [Android]) en la documentación de AWS Amplify Framework. -
Sign in (iOS)
(Iniciar sesión [iOS]) en la documentación de AWS Amplify Framework.