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.
- Domain controllers en una subnet privada.
- AWS Directory Service configurado con AD Connector.
- NAT Gateways en una subnet pública para que los domain controllers puedan comunicarse con Auth0.
- Amazon WorkSpaces configurado en una subnet privada.
Paso a paso
Son seis los pasos que hay que seguir para completar la configuración.
- Crear una App en Auth0 y generar un manifiesto de metadatos.
- Crear un proveedor de identidad SAML en AWS Identity and Access Management (IAM).
- Crear un IAM Role y una IAM Policy de federación SAML 2.0.
- Configurar Auth0 y las aserciones SAML.
- Habilitar la integración SAML 2.0 en tu directorio de WorkSpaces.
- 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
- Inicia sesión en el Management Dashboard de Auth0 y crea una nueva aplicación.
- En la pestaña Addons, habilita el addon SAML2 Web App.
- 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.
