Saltar al contenido principal
Al integrar Auth0 con AWS, permitirá que sus usuarios inicien sesión en AWS mediante cualquier compatible. Para configurar AWS para , debe completar los siguientes pasos:
  1. Cree un proveedor de identidad externo en AWS.
  2. Configure el complemento SAML2 Web App para su aplicación de Auth0.
  3. Complete la configuración del proveedor de identidad en AWS.
  4. Cree un rol de AWS IAM.
  5. Asigne el rol de AWS a un usuario.

Cree un Proveedor de identidad externo en AWS

  1. Configure un Proveedor de identidad externo en AWS siguiendo la guía de AWS Connect to your External Identity Provider, con un cambio.
    1. En lugar de descargar el archivo de metadatos de AWS, haga clic en Show Individual Metadata Values.
    2. Copie los valores de AWS SSO issuer URL y AWS SSO ACS URL. Los usará en la siguiente sección.
  2. Deje esta página abierta en el navegador, ya que deberá completar la configuración en una sección posterior.

Configurar SSO con SAML para Auth0

Configure el complemento SAML2 Web App para su aplicación mediante el . Para saber cómo hacerlo, lea Configurar Auth0 como Proveedor de identidad para Amazon Web Services.

Complete la configuración del proveedor de identidad de AWS

  1. Vuelva a la página del proveedor de identidad de AWS SSO que dejó abierta en el navegador.
  2. Cargue el archivo de metadatos que descargó y guardó en la sección anterior.
  3. Revise y confirme que está cambiando el origen de identidad.

Crear rol de AWS IAM

Para usar el proveedor, debe crear un rol de IAM e incluir el proveedor en la política de confianza del rol.
  1. En la barra lateral, en Access Management, vaya a Roles. Haga clic en Create Role.
  2. En la página siguiente, se le pedirá que seleccione el tipo de entidad de confianza. Seleccione SAML 2.0 Federation.
  3. Cuando se le solicite, establezca el proveedor que creó anteriormente como SAML provider. Seleccione Allow programmatic and AWS Management Console access. Haga clic en Next para continuar.
  4. En la página Attach Permission Policies, seleccione las políticas adecuadas para adjuntar al rol. Estas definen los permisos que tendrán en AWS los usuarios a quienes se les asigne este rol. Por ejemplo, para conceder a sus usuarios acceso de solo lectura a IAM, filtre y seleccione la política IAMReadOnlyAccess. Cuando haya terminado, haga clic en Next Step.
  5. La tercera pantalla de Create Role es Add Tags. Puede usar etiquetas para organizar los roles que cree si va a crear una cantidad considerable de ellos.
  6. En la página Review, establezca el Role Name y revise la configuración. Proporcione valores para los siguientes parámetros:
    CampoDescripción
    Role nameNombre descriptivo del rol.
    Role descriptionDescripción del uso del rol.
  7. Revise la información de Trusted entities y Policies y, a continuación, haga clic en Create Role.

Asignar un rol de AWS a un usuario

Para ver un ejemplo de cómo definir una Rule del servidor que asigna un rol en un caso de uso avanzado, consulte el tutorial de Amazon API Gateway.
Los roles de AWS especificados se asociarán con una política de IAM que determina el tipo de acceso permitido a un recurso, incluidas las consolas de AWS. Para obtener más información sobre roles y políticas, lea Creating IAM Roles.
  1. Para asignar un rol de AWS a un usuario, cree una Rule:
    function (user, context, callback) {
    
      user.awsRole = 'arn:aws:iam::951887872838:role/TestSAML,arn:aws:iam::951887872838:saml-provider/MyAuth0';
      user.awsRoleSession = user.name;
    
      context.samlConfiguration.mappings = {
        'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
        'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession'
      };
    
      callback(null, user, context);
    
    }
    
    En el fragmento de código anterior, user.awsRole identifica el rol de AWS y el IdP. El identificador del rol de AWS va antes de la coma, y el identificador del IdP va después.
    1. La Rule puede obtener estos dos valores de varias maneras. Puede obtenerlos desde la consola de IAM seleccionando, en la barra lateral izquierda, los elementos que creó en AWS en los pasos anteriores. Tanto el Proveedor de identidad como el rol que creó tienen un ARN disponible para copiar si los selecciona en la consola.
    2. En el ejemplo anterior, ambos valores están codificados directamente en la Rule. Como alternativa, también puede almacenarlos en el perfil del usuario o derivarlos a partir de otros atributos. Por ejemplo, si usa Active Directory, puede asignar propiedades asociadas a los usuarios, como group, al rol de AWS correspondiente:
      var awsRoles = {
        'DomainUser': 'arn:aws:iam::951887872838:role/TestSAML,arn:aws:iam::95123456838:saml-provider/MyAuth0',
        'DomainAdmins': 'arn:aws:iam::957483571234:role/SysAdmins,arn:aws:iam::95123456838:saml-provider/MyAuth0'
      };
      user.awsRole = awsRoles[user.group];
      user.awsRoleSession = user.email;
      
      context.samlConfiguration.mappings = {
        'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
        'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession',
      };
      

Asignar varios roles

También puede asignar un array a la asignación de roles (de modo que tendría awsRoles = [ role1, role2 ] en lugar de awsRoles: role1) Por ejemplo, supongamos que tiene grupos de Active Directory con la siguiente estructura:
var user = {
  app_metadata: {
    ad_groups: {
      "admins": "some info not aws related",
      "aws_dev_Admin": "arn:aws:iam::123456789111:role/Admin,arn:aws:iam::123456789111:saml-provider / Auth0",
      "aws_prod_ReadOnly": "arn:aws:iam::123456789999:role/ReadOnly,arn:aws:iam::123456789999:saml-provider / Auth0"
    }
  }
};
Por lo tanto, la regla podría quedar así:
function (user, context, callback) {

  var userGroups = user.app_metadata.ad_groups;

  function awsFilter(group) {
    return group.startsWith('aws_');
  }

  function mapGroupToRole(awsGroup) {
    return userGroups[awsGroup];
  }

  user.awsRole = Object.keys(userGroups).filter(awsFilter).map(mapGroupToRole);
  user.awsRoleSession = 'myawsuser'; // único para cada usuario http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html

  context.samlConfiguration.mappings = {
    'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
    'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession'
  };

  callback(null, user, context);

}

Configurar la expiración de la sesión

Para ampliar el tiempo que puede transcurrir antes de que expire la sesión de AWS (3600 segundos), use una Rule personalizada. La Rule establece el atributo SessionDuration, que modifica la duración de la sesión.

Configuración de prueba

  1. Vaya a Dashboard > Applications > Applications y haga clic en el nombre de su aplicación.
  2. En la pestaña Addons, seleccione el complemento SAML2 Web App.
  3. En la pestaña Usage, ubique la URL de inicio de sesión del Proveedor de identidad. Se le redirigirá a la página de inicio de sesión de la cuenta de Auth0. Si inicia sesión correctamente, se le redirigirá a AWS.

Más información