Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

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

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

By Manak WadhwaNov 23, 20236 min read
Manak Wadhwa

About Manak Wadhwa

I am a Senior Cloud Architect with deep hands-on experience designing and delivering end-to-end cloud architectures and infrastructure solutions. I specialise in complex migrations, data pipelines, and intelligent automation, helping organisations build secure, scalable, and cost-effective environments on AWS (with exposure to Azure and GCP).

My personal page

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.

PerfectScale™ for Kubernetes

Ready to optimize?

Get your free Kubernetes savings analysis

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.

Your cloud bill shouldn't be a mystery

Optimization, automation, expertise. In one platform.

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.