Uso de identidades federadas web 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 identidades federadas web para autenticar usuarios

Puede configurar directamente proveedores de identidad individuales para que accedanAWSrecursos mediante las identidades web federadas.AWSactualmente 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.

Después de tener 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 enhttps://console.aws.amazon.com/iam/para crear un nuevo rol de IAM.

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. desde lasProveedor de identidad, 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, consulteInformación general deAWSPermisos de IAMen laIAM User Guide. 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 sobre las políticas de IAM, consulteInformación general sobre las políticas de IAMen laIAM User Guide.

  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 sobre cómo usar la identidad federada web en IAM, consulteAcerca de identidades web federadasen laIAM User Guide.

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. Configurar laAWS.WebIdentityCredentialscon 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;