Uso de identidades federadas web para autenticar usuarios - AWS SDK for JavaScript

Anunciamos el próximo fin del soporte para AWS SDK for JavaScript v2. Se recomienda que migre a AWS SDK for JavaScript v3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Uso de identidades federadas web para autenticar usuarios

Puede configurar directamente distintos proveedores de identidades para obtener acceso a recursos de AWS a través de la federación de identidades web. AWS actualmente admite la autenticación de usuarios mediante las identidades web federadas a través de varios proveedores de identidades:

Primero debe registrar la aplicación con los proveedores compatibles con su aplicación. Luego cree un rol de IAM y configure permisos para él. El rol de IAM que cree se utilizará para conceder los permisos que haya configurado para él a través del proveedor de identidades respectivo. Por ejemplo, puede configurar un rol que permita a los usuarios que han iniciado sesión a través de Facebook tener acceso de lectura a un bucket de Amazon S3 específico que usted controla.

Una vez que tenga un rol de IAM con privilegios configurados y una aplicación registrada en los proveedores de identidades de su elección, puede configurar el SDK para obtener credenciales para el rol de IAM usando código auxiliar, tal y como se indica a continuación:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>/:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com', // this is null for Google WebIdentityToken: ACCESS_TOKEN });

El valor del parámetro ProviderId depende del proveedor de identidades especificado. El valor del parámetro WebIdentityToken es el token de acceso recuperado desde un inicio de sesión correcto con el proveedor de identidades. Para obtener más información sobre cómo configurar y recuperar tokens de acceso para cada proveedor de identidades, consulte la documentación del proveedor de identidades.

Paso 1: Registro en proveedores de identidades

Para empezar, registre una aplicación en los proveedores de identidades que decida admitir. Se le pedirá que proporcione información que identifique su aplicación y posiblemente su autor. De este modo, se garantiza que los proveedores de identidades sepan quién está recibiendo su información de usuario. En todos los casos, el proveedor de identidades emitirá un ID de aplicación que se utilizará para configurar los roles de usuarios.

Paso 2: Creación de un rol de IAM para un proveedor de identidades

Después de obtener el ID de aplicación de un proveedor de identidades, vaya a la consola de IAM en https://console.aws.amazon.com/iam/ para crear un rol de IAM nuevo.

Para crear un rol de IAM para proveedor de identidades
  1. Vaya a la sección Roles de la consola y, a continuación, seleccione Create New Role (Crear nuevo rol).

  2. Escriba un nombre para el nuevo rol que le ayudará a realizar un seguimiento de su uso, como por ejemplo facebookIdentity y luego elija Next Step (Paso siguiente).

  3. En Select Role Type (Seleccionar tipo de rol), elija Role for Identity Provider Access (Rol para acceso del proveedor de identidades).

  4. Para Grant access to web identity providers (Conceder acceso a los proveedores de identidades web), elija Select (Seleccionar).

  5. En la lista Proveedor de identidades, elija el proveedor de identidades que desea usar para este rol de IAM.

    Selección del rol para el acceso de proveedores de identidades
  6. Escriba el ID de la aplicación que ha proporcionado el proveedor de identidades en Application ID (ID de la aplicación) y, a continuación, seleccione Next Step (Paso siguiente).

  7. Configure permisos para los recursos que desea mostrar y permita el acceso a operaciones específicas en recursos específicos. Para obtener más información sobre los permisos de IAM, consulte Descripción general de los permisos de AWS IAM en la Guía del usuario de IAM. Revise y, si es necesario, personalice la relación de confianza del rol y, a continuación, seleccione Next Step (Paso siguiente).

  8. Asocie las políticas adicionales que necesita y, a continuación, seleccione Next Step (Paso siguiente). Para obtener más información acerca de las políticas de IAM, consulte Descripción general de las políticas de IAM en la Guía del usuario de IAM.

  9. Revise el nuevo rol y, a continuación, elija Create role (Crear rol).

Puede añadir más restricciones al rol como, por ejemplo, limitarlo a ID de usuario específicos. Si el rol concede permisos de escritura sobre sus recursos, asegúrese de que restringe el rol correctamente a los usuarios que tengan los privilegios adecuados; de lo contrario, cualquier usuario con una identidad de Amazon, Facebook o Google podrá modificar recursos de su aplicación.

Para obtener más información acerca de cómo usar la federación de identidades web en IAM, consulte Acerca de identidades web federadas en la Guía del usuario de IAM.

Paso 3: Obtención de un token de acceso después de iniciar sesión

Configure la acción de inicio de sesión para su aplicación mediante el SDK del proveedor de identidades. Puede descargar e instalar un SDK de JavaScript del proveedor de identidades que permita el inicio de sesión de usuario mediante OAuth u OpenID. Para obtener información acerca de cómo descargar y configurar el código del SDK en su aplicación, consulte la documentación del SDK para su proveedor de identidades:

Paso 4: Obtención de credenciales temporales

Una vez que haya configurado su aplicación, los roles y los permisos a nivel de recursos, añada el código a la aplicación para obtener credenciales temporales. Estas credenciales se proporcionan a través de AWS Security Token Service con la identidad web federada. Los usuarios inician sesión en el proveedor de identidades, el cual devuelve un token de acceso. Configure el objeto AWS.WebIdentityCredentials con el ARN para el rol de IAM que ha creado para este proveedor de identidades:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com', // Omit this for Google WebIdentityToken: ACCESS_TOKEN // Access token from identity provider });

Los objetos de servicio que se creen posteriormente tendrán las credenciales apropiadas. Los objetos creados antes de configurar la propiedad AWS.config.credentials no tienen las credenciales actuales.

También puede crear AWS.WebIdentityCredentials antes de recuperar el token de acceso. Esto le permite crear objetos de servicio que dependen de las credenciales antes de cargar el token de acceso. Para ello, cree el objeto de credenciales sin el parámetro WebIdentityToken:

AWS.config.credentials = new AWS.WebIdentityCredentials({ RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>', ProviderId: 'graph.facebook.com|www.amazon.com' // Omit this for Google }); // Create a service object var s3 = new AWS.S3;

A continuación, establezca WebIdentityToken en la devolución de llamada del SDK del proveedor de identidades que contiene el token de acceso:

AWS.config.credentials.params.WebIdentityToken = accessToken;