Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Configurare l'autenticazione SAML per Amazon WorkSpaces con Auth0 come identity provider

By Manak WadhwaNov 23, 20236 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Le aziende cercano costantemente metodi per offrire un'autenticazione più sicura e una migliore esperienza utente. Devono inoltre poter centralizzare autenticazione e autorizzazione senza dover replicare credenziali e permessi su un altro Identity Provider (IDP).

In questo articolo vediamo come configurare Auth0 come provider SAML 2.0 federato con un Active Directory aziendale già esistente, per abilitare il Single Sign-On verso Amazon WorkSpaces.

La piattaforma di identity management Auth0 garantisce maggiore controllo, sicurezza superiore e semplicità d'uso. Mette a disposizione il Single Sign-On (SSO) attraverso più canali: federazione aziendale, accesso tramite social o la classica autenticazione con username e password. In questo modo gli utenti effettuano l'accesso una sola volta e raggiungono tutte le applicazioni a loro disposizione senza ulteriori passaggi.

Architettura ad alto livello

Di seguito una panoramica della configurazione realizzata nell'ambiente. Per semplicità, abbiamo predisposto tutto all'interno di un'unica VPC come illustrato sotto.

  • Domain controller in una Private Subnet.
  • AWS Directory Service configurato con AD Connector.
  • NAT Gateway configurati in una Public Subnet, in modo che i domain controller possano comunicare con Auth0.
  • Amazon WorkSpaces configurato in una Private Subnet.

Procedura

Per completare la configurazione servono sei passaggi.

  1. Creare un'app in Auth0 e generare il manifest dei metadati.
  2. Creare un Identity Provider SAML in AWS Identity and Access Management (IAM).
  3. Creare un IAM Role e una IAM Policy per la federazione SAML 2.0.
  4. Configurare Auth0 e le SAML assertion.
  5. Abilitare l'integrazione SAML 2.0 nella directory di WorkSpaces.
  6. Testare la configurazione.

Prerequisiti

  • Account Auth0 con Active Directory connector configurato.
  • Active Directory Connector per AWS Directory Service configurato.
  • Un Amazon WorkSpace già provisionato all'interno della stessa directory.

Passaggio 1: creare un'app in Auth0 e generare il manifest dei metadati

  • Configurare l'addon dal pop-up che compare dopo aver abilitato SAML2 Web App. Nella scheda Settings, valorizzare il campo Application Callback URL con https://signin.aws.amazon.com/saml e incollare in Settings il seguente codice di configurazione SAML in 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"\
 ]
}

  • Scorrere fino in fondo e fare clic su Enable.
  • Aprire la scheda Usage per scaricare il file manifest dei metadati, che servirà nel passaggio successivo.

  • Chiudere la finestra di SAML2 Web App, quindi aprire Connections. Sotto Enterprise, selezionare il connector Active Directory/LDAP corretto.

Passaggio 2: creare un Identity Provider SAML in AWS Identity and Access Management (IAM)

  • Accedere al proprio account AWS e aprire la console IAM.
  • Nel pannello di navigazione, fare clic su Identity Providers e poi su Add Provider.

  • In Provider Type scegliere SAML, assegnare un nome significativo e aggiungere i tag necessari. In Metadata Document fare clic su Choose File, selezionare il documento di metadati SAML scaricato in precedenza e premere Open. Quindi fare clic su Add Provider in fondo alla schermata.

  • Verificare le informazioni inserite e fare clic su Create.
  • Annotare l'ARN del provider: servirà al passaggio 4.

Passaggio 3: creare un IAM Role e una IAM Policy per la federazione SAML 2.0

  • Nel pannello di navigazione, fare clic su Roles e poi su Create Role.

  • Come Role type scegliere SAML 2.0 federation.
  • Selezionare il SAML Provider creato al passaggio precedente.
  • Selezionare SAML:sub_type come Attribute. In Value digitare persistent. In questo modo l'accesso al ruolo è limitato alle sole richieste di streaming utente SAML che includono un'asserzione SAML subject type con valore persistent.
  • Verificare le informazioni di trust SAML 2.0, controllando che entità attendibile e condizione siano corrette, quindi scegliere Next: Permissions.
  • Nella pagina Attach permissions policies, scegliere Next: Tags.
  • Al termine, scegliere Next: Review. La policy inline per il ruolo verrà creata e incorporata in seguito.
  • In Role name digitare un nome che ne identifichi chiaramente lo scopo. Poiché il ruolo può essere referenziato da entità diverse, il nome non sarà più modificabile dopo la creazione.
  • (Facoltativo) In Role description inserire una descrizione del nuovo ruolo.
  • Verificare i dettagli e scegliere Create role.
  • Selezionare il ruolo creato, quindi aprire Trust relationships e cliccare Edit trust relationship.
  • Aggiornare l'azione per consentire sts:TagSession.

La policy dovrà risultare come segue.

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

Il passaggio successivo consiste nell'incorporare una Inline Policy nel ruolo appena creato.

  • Selezionare il ruolo IAM creato e, nella scheda Permissions, fare clic su Add Permissions->Create Inline Policy.

  • Aprire la scheda JSON e incollare la policy seguente. Aggiornare region, Account ID e directory ID in base alla propria configurazione.
{
   "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}"\
               }\
           }\
       }\
   ]
}

Ricordarsi di aggiornare region, account ID e directory ID.

  • Al termine, fare clic su Next, assegnare un nome alla policy e premere Create Policy.

Passaggio 4: configurare Auth0 e le SAML assertion

  • Accedere alla Management Dashboard di Auth0 e andare su Actions->Library-> Build Custom.
  • Assegnare un nome, mantenere il trigger su Login/Post Login e il runtime su Node 18, quindi fare clic su Create.

  • Nella schermata successiva, copiare e incollare il codice qui sotto e fare clic su 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;
};

Sostituire App_Name con il nome dell'app Auth0 creata al passaggio 1, IAM_arn con l'ARN del ruolo IAM creato al passaggio 3 e saml_provider_arn con l'ARN del SAML provider creato al passaggio 2.

  • Una volta completato, andare su Actions->Library-> Flows e fare clic su Login.
  • Nel pannello di destra, sotto Add Action, aprire Custom e trascinare l'azione creata tra Start e Complete.

  • Fare clic su Apply.

Passaggio 5: abilitare l'integrazione SAML 2.0 nella directory di WorkSpaces

Questo è l'ultimo passaggio per completare la configurazione.

  • Accedere alla AWS Management Console e andare in WorkSpaces-> Directories.
  • Fare clic sulla directory utilizzata dai propri WorkSpaces.
  • Fare clic su Edit Authentication.

  • Nella schermata Edit Authentication, fare clic su Edit SAML 2.0 Identity Provider.

  • Fare clic su Enable SAML 2.0 Authentication e indicare l'URL di login del proprio Identity Provider nel campo User Access URL. Il parametro IdP deep link può essere lasciato su "RelayState".

Passaggio 6: testare la configurazione

  • Aprire il client Amazon WorkSpaces per testare la configurazione e inserire il proprio registration code. Si dovrebbe ottenere un risultato simile a quello mostrato sotto.

  • Fare clic su Continue per accedere a WorkSpaces: si verrà reindirizzati alla pagina di accesso del proprio IDP, simile a quella riportata di seguito.

  • Effettuare il login con username e password di AD; in caso di autenticazione riuscita, si dovrebbe vedere una schermata simile alla seguente.

  • Fare clic su Open Workspaces: comparirà la schermata di accesso con lo username già precompilato.

  • Inserire la password: il workspace inizierà l'avvio.

  • Una volta avviato il workspace, il desktop verrà caricato.