Obtención de credenciales - Amazon Cognito

Obtención de credenciales

Puede utilizar Amazon Cognito para proporcionar credenciales temporales con privilegios limitados a la aplicación, a fin de que los usuarios puedan tener acceso a los recursos de AWS. En esta sección, se describe cómo obtener credenciales y cómo recuperar una identidad de Amazon Cognito de un grupo de identidades.

Amazon Cognito es compatible con las identidades autenticadas y no autenticadas. La identidad de los usuarios sin autenticar no se verifica, lo que hace que este rol sea adecuado para los usuarios invitados de la aplicación o para cuando no importa si se verifica la identidad de los usuarios. Los usuarios autenticados inician sesión en la aplicación a través de un proveedor de identidad externo, o un grupo de usuarios, que verifica su identidad. Asegúrese de asignar los permisos de los recursos de forma adecuada, para no conceder acceso a ellos a los usuarios no autenticados.

Las identidades de Amazon Cognito no son credenciales. Se intercambian por credenciales utilizando la compatibilidad con las identidades web federadas de AWS Security Token Service (AWS STS). La forma recomendada de obtener credenciales de AWS para los usuarios de la aplicación es utilizar AWS.CognitoIdentityCredentials. La identidad en el objeto de credenciales se intercambia por credenciales usando AWS STS.

nota

Si creó el grupo de identidades antes de febrero de 2015, debe volver a asociar los roles al grupo de identidades para utilizar el constructor AWS.CognitoIdentityCredentials sin los roles como parámetros. Para ello, abra la consola de Amazon Cognito, elija Manage Identity Pools (Administrar grupos de identidades), seleccione su grupo de identidades, elija Edit Identity Pool (Editar grupo de identidades), especifique los roles autenticados y sin autenticar, y guarde los cambios.

Los proveedores de credenciales de identidad web forman parte de la cadena de proveedores de credenciales predeterminada en los AWS SDK. Para configurar el token de grupo de identidades en un archivo config local para un AWS SDK o la AWS CLI, agregue una entrada de perfil web_identity_token_file. Consulte Asumir el rol de proveedor de credenciales en la Guía de referencia de los AWS SDK y las herramientas.

Para obtener más información sobre cómo rellenar las credenciales de identidad web en el SDK, consulte la guía para desarrolladores del SDK. Para obtener los mejores resultados, inicie el proyecto con la integración del grupo de identidades integrada en AWS Amplify.

Recursos del AWS SDK para obtener y configurar credenciales con grupos de identidades

En las siguientes secciones, se proporciona código de ejemplo de algunos AWS SDK antiguos.

Puede utilizar Amazon Cognito para proporcionar credenciales temporales con privilegios limitados a la aplicación a fin de que los usuarios puedan acceder a los recursos de AWS. Amazon Cognito es compatible con las identidades autenticadas y no autenticadas. Para proporcionar credenciales de AWS a su aplicación, siga los pasos que se indican a continuación.

Para usar un grupo de identidades de Amazon Cognito en una aplicación de Android, configure AWS Amplify. Para obtener más información, consulte Autenticación en el Amplify Dev Center.

Recuperación de una identidad de Amazon Cognito

Si admite usuarios no autenticados, puede recuperar un identificador único de Amazon Cognito (ID de identidad) para el usuario final de forma inmediata. Si está autenticando usuarios, puede recuperar el ID de identidad después de definir los tokens de inicio de sesión en el proveedor de credenciales:

String identityId = credentialsProvider.getIdentityId(); Log.d("LogTag", "my ID is " + identityId);
nota

No llame a getIdentityId(), refresh() o getCredentials() en el subproceso principal de la aplicación. A partir de Android 3.0 (nivel de API 11), la aplicación fallará automáticamente y mostrará una NetworkOnMainThreadException si realiza E/S de red en el subproceso de la aplicación principal. Debe mover el código a un subproceso en segundo plano usando AsyncTask. Para obtener más información, consulte la documentación de Android. También puede llamar a getCachedIdentityId() para recuperar un ID, pero solo si ya hay uno almacenado localmente en la caché. De lo contrario, el método devolverá un valor nulo.

Puede utilizar Amazon Cognito para proporcionar credenciales temporales con privilegios limitados a la aplicación a fin de que los usuarios puedan acceder a los recursos de AWS. Los grupos de identidades de Amazon Cognito admiten tanto las identidades autenticadas como las no autenticadas. Para proporcionar credenciales de AWS a la aplicación, complete los siguientes pasos.

Para usar un grupo de identidades de Amazon Cognito en una aplicación de iOS, configure AWS Amplify. Para obtener más información, consulte Autenticación de Swift y Autenticación de Flutter en el Amplify Dev Center.

Recuperación de una identidad de Amazon Cognito

Puede recuperar un identificador único de Amazon Cognito (ID de identidad) para el usuario final de inmediato si admite usuarios no autenticados o después de que haya establecido los tokens de inicio de sesión en el proveedor de credenciales si autentica a usuarios:

// Retrieve your Amazon Cognito ID [[credentialsProvider getIdentityId] continueWithBlock:^id(AWSTask *task) { if (task.error) { NSLog(@"Error: %@", task.error); } else { // the task result will contain the identity id NSString *cognitoId = task.result; } return nil; }];
nota

getIdentityId es una llamada asíncrona. Si ya hay un ID de identidad definido en el proveedor, puede llamar a credentialsProvider.identityId para recuperar la identidad, que está almacenada localmente en la caché. Sin embargo, si no hay un ID de identidad definido en el proveedor, la llamada a credentialsProvider.identityId devolverá nil. Para obtener más información, consulte Referencia de la API del SDK para móviles para iOS.

Puede utilizar Amazon Cognito para proporcionar credenciales temporales con privilegios limitados a la aplicación, a fin de que los usuarios puedan tener acceso a los recursos de AWS. Amazon Cognito es compatible con las identidades autenticadas y no autenticadas. Para proporcionar credenciales de AWS a su aplicación, siga los pasos que se indican a continuación.

Para usar un grupo de identidades de Amazon Cognito en una aplicación de iOS, configure AWS Amplify. Para obtener más información, consulte Autenticación de Swift en el Amplify Dev Center.

Recuperación de una identidad de Amazon Cognito

Puede recuperar un identificador único de Amazon Cognito (ID de identidad) para el usuario final de inmediato si admite usuarios no autenticados o después de que haya establecido los tokens de inicio de sesión en el proveedor de credenciales si autentica a usuarios:

// Retrieve your Amazon Cognito ID credentialsProvider.getIdentityId().continueWith(block: { (task) -> AnyObject? in if (task.error != nil) { print("Error: " + task.error!.localizedDescription) } else { // the task result will contain the identity id let cognitoId = task.result! print("Cognito id: \(cognitoId)") } return task; })
nota

getIdentityId es una llamada asíncrona. Si ya hay un ID de identidad definido en el proveedor, puede llamar a credentialsProvider.identityId para recuperar la identidad, que está almacenada localmente en la caché. Sin embargo, si no hay un ID de identidad definido en el proveedor, la llamada a credentialsProvider.identityId devolverá nil. Para obtener más información, consulte Referencia de la API del SDK para móviles para iOS.

Si todavía no lo ha hecho, cree un grupo de identidades en la consola de Amazon Cognito antes de usar AWS.CognitoIdentityCredentials.

Después de configurar un grupo de identidades con sus proveedores de identidad, puede utilizar AWS.CognitoIdentityCredentials para autenticar a los usuarios. Para configurar las credenciales de la aplicación para utilizar AWS.CognitoIdentityCredentials, establezca la propiedad credentials de AWS.Config o una configuración específica para cada servicio. El siguiente ejemplo utiliza AWS.Config:

// Set the region where your identity pool exists (us-east-1, eu-west-1) AWS.config.region = 'us-east-1'; // Configure the credentials provider to use your identity pool AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { // optional tokens, used for authenticated login 'graph.facebook.com': 'FBTOKEN', 'www.amazon.com': 'AMAZONTOKEN', 'accounts.google.com': 'GOOGLETOKEN', 'appleid.apple.com': 'APPLETOKEN' } }); // Make the call to obtain credentials AWS.config.credentials.get(function(){ // Credentials will be available when this function is called. var accessKeyId = AWS.config.credentials.accessKeyId; var secretAccessKey = AWS.config.credentials.secretAccessKey; var sessionToken = AWS.config.credentials.sessionToken; });

La propiedad opcional Logins es un mapeo entre los nombres de los proveedores de identidad y los tokens de identidad de los proveedores. La forma de obtener el token del proveedor de identidad depende del proveedor que se utilice. Por ejemplo, si Facebook es uno de sus proveedores de identidad, puede utilizar la función FB.login del SDK de Facebook para obtener un token de proveedor de identidad:

FB.login(function (response) { if (response.authResponse) { // logged in AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } });

Recuperación de una identidad de Amazon Cognito

Puede recuperar un identificador único de Amazon Cognito (ID de identidad) para el usuario final de inmediato si admite usuarios no autenticados o después de que haya establecido los tokens de inicio de sesión en el proveedor de credenciales si autentica a usuarios:

var identityId = AWS.config.credentials.identityId;

Puede utilizar Amazon Cognito para proporcionar credenciales temporales con privilegios limitados a la aplicación a fin de que los usuarios puedan acceder a los recursos de AWS. Amazon Cognito es compatible con las identidades autenticadas y no autenticadas. Para proporcionar credenciales de AWS a su aplicación, siga los pasos que se indican a continuación.

El AWS SDK para Unity ahora forma parte de AWS SDK for .NET. Para comenzar a utilizar Amazon Cognito en AWS SDK for .NET, consulte el proveedor de credenciales de Amazon Cognito en la guía para desarrolladores de AWS SDK for .NET. O consulte Amplify Dev Center para conocer las opciones para crear una aplicación con AWS Amplify.

Recuperación de una identidad de Amazon Cognito

Puede recuperar un identificador único de Amazon Cognito (ID de identidad) para el usuario final de inmediato si admite usuarios no autenticados o después de que haya establecido los tokens de inicio de sesión en el proveedor de credenciales si autentica a usuarios:

credentials.GetIdentityIdAsync(delegate(AmazonCognitoIdentityResult<string> result) { if (result.Exception != null) { //Exception! } string identityId = result.Response; });

Puede utilizar Amazon Cognito para proporcionar credenciales temporales con privilegios limitados a la aplicación, a fin de que los usuarios puedan tener acceso a los recursos de AWS. Amazon Cognito es compatible con las identidades autenticadas y no autenticadas. Para proporcionar credenciales de AWS a su aplicación, siga los pasos que se indican a continuación.

El AWS SDK de Xamarin ahora forma parte de AWS SDK for .NET. Para comenzar a utilizar Amazon Cognito en AWS SDK for .NET, consulte el proveedor de credenciales de Amazon Cognito en la guía para desarrolladores de AWS SDK for .NET. O consulte Amplify Dev Center para conocer las opciones para crear una aplicación con AWS Amplify.

nota

Nota: si creó el grupo de identidades antes de febrero de 2015, debe volver a asociar los roles a su grupo de identidades a fin de utilizar este constructor sin los roles como parámetros. Para ello, abra la consola de Amazon Cognito, elija Manage Identity Pools (Administrar grupos de identidades), seleccione su grupo de identidades, elija Edit Identity Pool (Editar grupo de identidades), especifique los roles autenticados y sin autenticar, y guarde los cambios.

Recuperación de una identidad de Amazon Cognito

Puede recuperar un identificador único de Amazon Cognito (ID de identidad) para el usuario final de inmediato si admite usuarios no autenticados o después de que haya establecido los tokens de inicio de sesión en el proveedor de credenciales si autentica a usuarios:

var identityId = await credentials.GetIdentityIdAsync();