Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Configura la autenticación SAML para Amazon WorkSpaces con Auth0 como tu proveedor de identidad

By Manak WadhwaNov 23, 20236 min read

Esta página también está disponible en English, Deutsch, Français, Italiano, 日本語 y Português.

Las empresas buscan formas de ofrecer una autenticación más segura y una mejor experiencia al usuario. Además, necesitan centralizar la autenticación y autorización sin tener que replicar credenciales y permisos en otro proveedor de identidad (IDP).

En este blog te mostramos cómo configurar Auth0 como proveedor SAML 2.0 federado con un Active Directory empresarial existente, a modo de Single Sign-On para transmitir Amazon WorkSpaces.

La plataforma de identidad y gestión de Auth0 ofrece mayor control, seguridad superior y facilidad de uso. Habilita Single Sign-On (SSO) por múltiples vías: federación empresarial, inicio de sesión social o autenticación tradicional con usuario y contraseña. Así, tus usuarios inician sesión una sola vez y acceden sin fricción a todas las aplicaciones disponibles para ellos.

Arquitectura de alto nivel

A continuación se muestra un resumen de lo que se configuró en el entorno. Para simplificar, todo se montó en una misma VPC, como se ve abajo.

Paso a paso

Son seis los pasos que hay que seguir para completar la configuración.

  1. Crear una App en Auth0 y generar un manifiesto de metadatos.
  2. Crear un proveedor de identidad SAML en AWS Identity and Access Management (IAM).
  3. Crear un IAM Role y una IAM Policy de federación SAML 2.0.
  4. Configurar Auth0 y las aserciones SAML.
  5. Habilitar la integración SAML 2.0 en tu directorio de WorkSpaces.
  6. Probar la configuración.

Requisitos previos

  • Cuenta de Auth0 con el conector de Active Directory configurado.
  • Active Directory Connector configurado para AWS Directory Service.
  • Un Amazon WorkSpace aprovisionado dentro del mismo directorio.

Paso 1: Crear una App en Auth0 y generar un manifiesto de metadatos

  • Configura el addon desde el pop-up que aparece al habilitar SAML2 Web App. En la pestaña Settings, completa el campo Application Callback URL con https://signin.aws.amazon.com/saml y pega en Settings el siguiente código de configuración SAML en formato JSON:
{
 "audience": "https://signin.aws.amazon.com/saml",
 "mappings": {
   "email": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/sAMAccountName",
   "name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
 },
 "createUpnClaim": false,
 "passthroughClaimsWithNoMapping": false,
 "mapUnknownClaimsAsIs": false,
 "mapIdentities": false,
 "nameIdentifierFormat": "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
 "nameIdentifierProbes": [\
   "http://schemas.auth0.com/sAMAccountName"\
 ]
}

  • Baja hasta el final y haz clic en Enable.
  • Entra en la pestaña Usage para descargar el archivo de manifiesto de metadatos. Lo necesitarás en el siguiente paso.

  • Cierra la ventana de SAML2 Web App y haz clic en Connections. Dentro de Enterprise, selecciona el conector de Active Directory/LDAP correspondiente.

Paso 2: Crear un proveedor de identidad SAML en AWS Identity and Access Management (IAM)

  • Inicia sesión en tu cuenta de AWS y abre la consola de IAM.
  • En el panel de navegación, haz clic en Identity Providers y luego en Add Provider.

  • En Provider Type, elige SAML, asígnale un nombre descriptivo y agrega los tags que necesites. En Metadata Document, haz clic en Choose File, selecciona el documento de metadatos SAML que descargaste en el paso anterior y haz clic en Open. Cuando termines, haz clic en Add Provider al final de la pantalla.

  • Verifica la información ingresada y haz clic en Create.
  • Toma nota del ARN de este proveedor, ya que lo necesitarás en el paso 4.

Paso 3: Crear un IAM Role y una IAM Policy para la federación SAML 2.0

  • En el panel de navegación, haz clic en Roles y luego en Create Role.

  • En Role type, elige SAML 2.0 federation.
  • Selecciona el SAML Provider que creaste en el paso anterior.
  • En Attribute, selecciona SAML:sub_type. En Value, escribe persistent. Con esto, el acceso del rol queda restringido a las solicitudes de streaming de usuarios SAML que incluyan una aserción de tipo de sujeto SAML con valor persistent.
  • Revisa la información de confianza de SAML 2.0, confirma la entidad y la condición correctas y luego elige Next: Permissions.
  • En la página Attach permissions policies, elige Next: Tags.
  • Cuando termines, elige Next: Review. Más adelante crearás e incrustarás una inline policy en este rol.
  • En Role name, escribe un nombre que te ayude a identificar el propósito del rol. Como diversas entidades pueden hacer referencia a él, no podrás editar su nombre una vez creado.
  • (Opcional) En Role description, escribe una descripción para el nuevo rol.
  • Revisa los detalles del rol y elige Create role.
  • Selecciona el rol que creaste, luego ve a Trust relationships y Edit trust relationship.
  • Actualiza la acción para permitir sts:TagSession.

La política debería verse así:

{
   "Version": "2012-10-17",
   "Statement": [\
      {\
         "Effect": "Allow",\
         "Principal": {\
            "Federated": "arn:aws:iam:::saml-provider/name"\
         },\
         "Action": [\
            "sts:AssumeRoleWithSAML",\
            "sts:TagSession"\
         ],\
         "Condition": {\
            "StringEquals": {\
               "SAML:sub_type": "persistent"\
            }\
         }\
      }\
   ]
}

El siguiente paso es incrustar una Inline Policy en el rol que acabamos de crear.

  • Selecciona el IAM Role que creamos y, en la pestaña de permisos, haz clic en Add Permissions->Create Inline Policy.

  • Ve a la pestaña JSON y pega la política de abajo. Actualiza la region, el Account ID y el directory ID según tu configuración.
{
   "Version": "2012-10-17",
   "Statement": [\
       {\
           "Effect": "Allow",\
           "Action": "workspaces:Stream",\
           "Resource": "arn:aws:workspaces:<region>:<account-id>:directory/<directory-id>",\
           "Condition": {\
               "StringEquals": {\
                   "workspaces:userId": "${saml:sub}"\
               }\
           }\
       }\
   ]
}

Asegúrate de actualizar la region, el account ID y el directory ID.

  • Cuando termines, haz clic en next, dale un nombre a la política y haz clic en Create Policy.

Paso 4: Configurar Auth0 y las aserciones SAML

  • Inicia sesión en el Management Dashboard de Auth0 y ve a Actions->Library-> Build Custom.
  • Asígnale un nombre, deja el trigger en Login/Post Login y el runtime en Node 18, y haz clic en Create.

  • En la siguiente pantalla, copia y pega el código de abajo y haz clic en Deploy.
exports.onExecutePostLogin = async (event, api) => {
  if (event.client.name === "APP_NAME") {
    const awsRole = 'IAM_arn,saml_provider_arn';
    const awsRoleSession = event.user.sAMAccountName;
    const email = event.user.emails[0];
    api.samlResponse.setDestination('https://signin.aws.amazon.com/saml');
    api.samlResponse.setAttribute('https://aws.amazon.com/SAML/Attributes/Role', awsRole)
    api.samlResponse.setAttribute('https://aws.amazon.com/SAML/Attributes/RoleSessionName', awsRoleSession)
    api.samlResponse.setAttribute('https://aws.amazon.com/SAML/Attributes/PrincipalTag:Email', email)
}
return;
};

Reemplaza App_Name por el nombre de la App de Auth0 que creaste en el paso 1. Luego reemplaza IAM_arn por el ARN del IAM Role creado en el paso 3 y saml_provider_arn por el ARN del SAML Provider creado en el paso 2.

  • Cuando termines, ve a Actions->Library-> Flows y haz clic en Login.
  • En el panel derecho, dentro de Add Action, haz clic en Custom y arrastra la action que creaste entre Start y Complete.

  • Haz clic en Apply.

Paso 5: Habilitar la integración SAML 2.0 en tu directorio de WorkSpaces

Este es el último paso para completar la configuración.

  • Inicia sesión en la AWS Management Console y luego ve a WorkSpaces-> Directories.
  • Haz clic en el directorio que usan tus WorkSpaces.
  • Haz clic en Edit Authentication.

  • En la pantalla de edición de autenticación, haz clic en Edit SAML 2.0 Identity Provider.

  • Haz clic en Enable SAML 2.0 Authentication e ingresa la URL de inicio de sesión de tu proveedor de identidad en User Access URL. Puedes dejar el nombre del IdP deep link parameter como "RelayState".

Paso 6: Probar la configuración

  • Abre tu cliente de Amazon WorkSpaces para probar la configuración e ingresa tu código de registro. Deberías ver algo similar a lo siguiente.

  • Haz clic en Continue para iniciar sesión en WorkSpaces; el sistema te redirigirá a la página de inicio de sesión de tu IDP, similar a la siguiente.

  • Inicia sesión con tu usuario y contraseña de AD; si la autenticación es correcta, deberías ver algo así.

  • Haz clic en Open WorkSpaces y aparecerá la pantalla de inicio de sesión con tu nombre de usuario ya cargado.

  • Ingresa tu contraseña y verás que el WorkSpace comienza a iniciarse.

  • Una vez iniciado el WorkSpace, debería cargarse el escritorio.