Uso de Amazon Cognito Identity para autenticar usuarios - AWS SDK for JavaScript

LaAWS SDK for JavaScript versión 3 (v3) es una reescritura de la versión 2 con algunas funciones nuevas y excelentes, incluida la arquitectura modular. Para obtener más información, consulte la Guía para desarrolladores de la versiónAWS SDK for JavaScript 3.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de Amazon Cognito Identity para autenticar usuarios

La forma recomendada de obtenerAWSlas credenciales de los scripts de su navegador consiste en utilizar el objeto de credenciales de Amazon Cognito Identity,AWS.CognitoIdentityCredentials. Amazon Cognito permite la autenticación de usuarios a través de proveedores de identidad de terceros.

Para utilizar Amazon Cognito Identity, primero debe crear un grupo de identidades en la consola de Amazon Cognito. Un grupo de identidades representa el grupo de identidades que su aplicación proporciona a los usuarios. Las identidades que se dan a los usuarios identifican de forma única cada cuenta de usuario. Las identidades de Amazon Cognito no son credenciales. Se intercambian por credenciales utilizando la compatibilidad con las identidades web federadas en AWS Security Token Service (AWS STS).

Amazon Cognito le ayuda a administrar la abstracción de identidades en varios proveedores de identidades con lasAWS.CognitoIdentityCredentialsobjeto. La identidad que se carga se intercambia por credenciales en AWS STS.

Configuración del objeto Amazon Cognito Identity Credenciales

Si todavía no lo ha creado, cree un grupo de identidades para usarlo con los scripts de navegador en laConsola de Amazon Cognitoantes de configurarAWS.CognitoIdentityCredentials. Cree y asocie roles de IAM autenticados y sin autenticar para su grupo de identidades.

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 identidades externo que verifica sus identidades. Asegúrese de asignar los permisos de los recursos de forma adecuada, para no conceder acceso a ellos a los usuarios no autenticados.

Después de configurar un grupo de identidades con proveedores de identidades asociados, 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:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { // optional tokens, used for authenticated login 'graph.facebook.com': 'FBTOKEN', 'www.amazon.com': 'AMAZONTOKEN', 'accounts.google.com': 'GOOGLETOKEN' } });

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 } }); s3 = new AWS.S3; // we can now create our service object console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } });

Cambio de usuarios sin autenticar a usuarios autenticados

Amazon Cognito es compatible con usuarios autenticados y sin autenticar. Los usuarios sin autenticar reciben acceso a sus recursos incluso si no han iniciado sesión con alguno de sus proveedores de identidades. Este grado de acceso es útil para mostrar contenido a usuarios antes de que inicien sesión. Cada usuario sin autenticar tiene una identidad única en Amazon Cognito aunque no haya iniciado sesión ni se haya autenticado individualmente.

Usuario sin autenticar inicialmente

Los usuarios suelen comenzar con el rol sin autenticar, para el que se establece la propiedad de credenciales de su objeto de configuración sin una propiedad Logins. En este caso, la configuración predeterminada podría tener el siguiente aspecto:

// set the default config object var creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030' }); AWS.config.credentials = creds;

Cambie a usuario autenticado

Cuando un usuario sin autenticar inicia sesión en un proveedor de identidades y tiene un token, puede cambiar el usuario de no estar autenticado a estar autenticado llamando a una función personalizada que actualiza el objeto de credenciales y añade el token Logins:

// Called when an identity provider has a token for a logged in user function userLoggedIn(providerName, token) { creds.params.Logins = creds.params.Logins || {}; creds.params.Logins[providerName] = token; // Expire credentials to refresh them on the next request creds.expired = true; }

También puede crear un objeto CognitoIdentityCredentials. Si lo hace, debe restablecer las propiedades de las credenciales de los objetos de servicio existentes que ha creado. Los objetos de servicio leen en la configuración global solo al realizarse la inicialización del objeto.

Para obtener más información acerca de lasCognitoIdentityCredentialsobjeto, consulteAWS.CognitoIdentityCredentialsen laAWS SDK for JavaScriptReferencia de la API.