Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Authentification SAML pour Amazon WorkSpaces : Auth0 comme fournisseur d'identité

By Manak WadhwaNov 23, 20236 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Les entreprises cherchent à proposer une authentification plus sécurisée tout en améliorant l'expérience utilisateur. Elles doivent également centraliser l'authentification et l'autorisation des utilisateurs, sans dupliquer les identifiants ni les droits dans un autre fournisseur d'identité (IDP).

Cet article explique comment configurer Auth0 comme fournisseur SAML 2.0 fédéré avec un Active Directory d'entreprise existant, afin d'activer le Single Sign-On (SSO) pour diffuser Amazon WorkSpaces.

La plateforme de gestion des identités Auth0 apporte un meilleur contrôle, une sécurité renforcée et une grande simplicité d'usage. Elle propose le Single Sign-On (SSO) via plusieurs canaux : fédération d'entreprise, connexion sociale ou authentification classique par identifiant et mot de passe. Vos utilisateurs se connectent ainsi une seule fois et accèdent à l'ensemble des applications mises à leur disposition.

Architecture générale

Voici un aperçu de la configuration mise en place. Tout a été déployé dans un seul VPC pour simplifier la mise en œuvre.

  • Contrôleurs de domaine dans un sous-réseau privé.
  • AWS Directory Service configuré avec AD Connector.
  • Passerelles NAT déployées dans un sous-réseau public, pour que les contrôleurs de domaine puissent communiquer avec Auth0.
  • Amazon WorkSpaces déployé dans un sous-réseau privé.

Étapes à suivre

Six étapes sont nécessaires pour finaliser la configuration.

  1. Créer une application dans Auth0 et générer un manifeste de métadonnées.
  2. Créer un fournisseur d'identité SAML dans AWS Identity and Access Management (IAM).
  3. Créer un rôle IAM et une politique IAM pour la fédération SAML 2.0.
  4. Configurer Auth0 et les assertions SAML.
  5. Activer l'intégration SAML 2.0 dans votre annuaire WorkSpaces.
  6. Tester votre configuration.

Prérequis

  • Un compte Auth0 avec un connecteur Active Directory configuré.
  • Un AD Connector configuré pour AWS Directory Service.
  • Un Amazon WorkSpace provisionné dans le même annuaire.

Étape 1 : créer une application dans Auth0 et générer un manifeste de métadonnées

  • Configurez cet addon dans la fenêtre contextuelle qui s'ouvre après son activation. Dans l'onglet Settings, renseignez le champ Application Callback URL avec https://signin.aws.amazon.com/saml, puis collez le code de configuration SAML suivant au format JSON dans Settings :
{
 "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"\
 ]
}

  • Faites défiler jusqu'en bas et cliquez sur Enable.
  • Cliquez sur l'onglet Usage pour télécharger le fichier manifeste de métadonnées. Ce fichier sera utilisé à l'étape suivante.

  • Fermez la fenêtre SAML2 Web App, puis cliquez sur Connections. Sous Enterprise, sélectionnez le connecteur Active Directory/LDAP approprié.

Étape 2 : créer un fournisseur d'identité SAML dans AWS Identity and Access Management (IAM)

  • Connectez-vous à votre compte AWS et ouvrez la console IAM.
  • Dans le panneau de navigation, cliquez sur Identity Providers, puis sur Add Provider.

  • Pour Provider Type, choisissez SAML, attribuez un nom explicite et ajoutez des tags au besoin. Pour Metadata Document, cliquez sur Choose File, sélectionnez le document de métadonnées SAML téléchargé à l'étape précédente, puis cliquez sur Open. Cliquez ensuite sur Add Provider en bas de l'écran.

  • Vérifiez les informations saisies, puis cliquez sur Create.
  • Notez l'ARN de ce fournisseur : il vous servira à l'étape 4.

Étape 3 : créer un rôle IAM et une politique IAM pour la fédération SAML 2.0

  • Dans le panneau de navigation, cliquez sur Roles, puis sur Create Role.

  • Pour le type de rôle, choisissez SAML 2.0 federation.
  • Sélectionnez le fournisseur SAML créé à l'étape précédente.
  • Sélectionnez SAML:sub_type pour Attribute. Pour Value, saisissez persistent. Cette étape limite l'accès au rôle aux seules requêtes de streaming d'utilisateurs SAML qui contiennent une assertion de type subject SAML avec la valeur persistent.
  • Vérifiez vos informations de confiance SAML 2.0 en confirmant l'entité de confiance et la condition, puis cliquez sur Next: Permissions.
  • Sur la page Attach permissions policies, cliquez sur Next: Tags.
  • Une fois terminé, cliquez sur Next: Review. Vous créerez et intégrerez une politique inline pour ce rôle plus tard.
  • Pour Role name, saisissez un nom permettant d'identifier facilement la finalité du rôle. Plusieurs entités pouvant y faire référence, son nom ne peut plus être modifié après création.
  • (Facultatif) Pour Role description, saisissez une description du nouveau rôle.
  • Vérifiez les détails du rôle et cliquez sur Create role.
  • Sélectionnez le rôle créé, puis cliquez sur Trust relationships et Edit trust relationship.
  • Mettez à jour l'action pour autoriser sts:TagSession.

La politique doit ressembler à ceci :

{
   "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"\
            }\
         }\
      }\
   ]
}

L'étape suivante consiste à intégrer une politique inline au rôle qui vient d'être créé.

  • Sélectionnez le rôle IAM créé, puis dans l'onglet permissions, cliquez sur Add Permissions->Create Inline Policy.

  • Sélectionnez l'onglet JSON et collez la politique ci-dessous. Adaptez la region, l'Account ID et le directory ID à votre configuration.
{
   "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}"\
               }\
           }\
       }\
   ]
}

Pensez à mettre à jour la région, l'ID de compte et l'ID d'annuaire.

  • Une fois terminé, cliquez sur Next, donnez un nom à votre politique, puis cliquez sur Create Policy.

Étape 4 : configurer Auth0 et les assertions SAML

  • Connectez-vous au Management Dashboard d'Auth0 et accédez à Actions->Library-> Build Custom.
  • Saisissez un nom, conservez le déclencheur Login/Post Login et le runtime Node 18, puis cliquez sur Create.

  • Sur l'écran suivant, copiez-collez le code ci-dessous, puis cliquez sur 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;
};

Remplacez App_Name par le nom de l'application Auth0 créée à l'étape 1, IAM_arn par l'ARN du rôle IAM créé à l'étape 3, et saml_provider_arn par l'ARN du fournisseur SAML créé à l'étape 2.

  • Une fois terminé, accédez à Actions->Library-> Flows et cliquez sur Login.
  • Dans le volet de droite, sous Add Action, cliquez sur Custom et placez l'action que vous venez de créer entre Start et Complete.

  • Cliquez sur Apply.

Étape 5 : activer l'intégration SAML 2.0 dans votre annuaire WorkSpaces

Voici la dernière étape pour finaliser la configuration.

  • Connectez-vous à la console de gestion AWS, puis accédez à WorkSpaces-> Directories.
  • Cliquez sur l'annuaire utilisé par vos WorkSpaces.
  • Cliquez sur Edit Authentication.

  • Dans l'écran d'édition de l'authentification, cliquez sur Edit SAML 2.0 Identity Provider.

  • Cliquez sur Enable SAML 2.0 Authentication, puis renseignez l'URL de connexion de votre fournisseur d'identité dans User Access URL. Vous pouvez conserver le nom du paramètre IdP deep link sur RelayState.

Étape 6 : tester votre configuration

  • Ouvrez votre client Amazon WorkSpaces pour tester cette configuration et saisissez votre code d'enregistrement. Vous devriez obtenir un écran semblable à celui ci-dessous.

  • Cliquez sur Continue pour vous connecter à WorkSpaces ; vous serez redirigé vers la page de connexion de votre IDP, qui ressemblera à ce qui suit.

  • Connectez-vous avec votre identifiant et votre mot de passe AD ; en cas de succès, l'écran ci-dessous devrait s'afficher.

  • Cliquez sur Open Workspaces : l'écran de connexion s'affiche, votre identifiant déjà pré-rempli.

  • Saisissez votre mot de passe : le démarrage du WorkSpace s'amorce.

  • Une fois le WorkSpace démarré, le bureau se charge.