SAML

Autore:Lars Nyström
Aggiornato:7 mag 2025

Scopri come SAML abilita il Single Sign-On (SSO) per le aziende consentendo agli utenti di autenticarsi tramite un provider di identità centralizzato (IdP).


Indice dei contenuti

  1. Cos'è SAML?
  2. Come funziona SAML
  3. SAML contro OIDC
  4. Vantaggi di SAML
  5. Spiegazione delle asserzioni SAML
  6. Implementazione di SAML SSO
  7. Considerazioni sulla sicurezza
  8. Risoluzione dei problemi
  9. Glossario

Cos'è SAML?

SAML (Security Assertion Markup Language) è uno standard aperto basato su XML utilizzato per Single Sign-On (SSO) su più domini. Consente agli utenti di accedere una volta utilizzando un Identity Provider (IdP) centrale e ottenere l'accesso a più applicazioni (Service Provider o SP) senza reinserire le credenziali.

  • Sviluppato dal consorzio OASIS
  • Comunemente usato in ambienti aziendali
  • Compatibile con IdP come Okta, Azure AD, OneLogin e altri

Come funziona SAML

  1. L'utente tenta di accedere a una risorsa protetta (fornitore di servizi).
  2. SP reindirizza l'utente all'Identity Provider (IdP).
  3. L'utente si autentica presso l'IdP (ad es. con credenziali aziendali).
  4. L'IdP invia una risposta SAML, contenente un'asserzione, all'SP.
  5. SP convalida la risposta, estrae i dati di identità e accede all'utente.

SAML contro OIDC

Caratteristica SAML Connessione OpenID (OIDC)
Tipo di protocollo XML JSON e REST (OAuth 2.0)
Caso d'uso popolare Soluzioni Enterprise SSO Accesso web/app mobile
Meccanismo di trasporto Reindirizzamenti del browser (POST/Redirect) JSON su HTTPS
Tipo di token Asserzione SAML (XML) Token di identificazione (JWT)
Complessità Più alto Inferiore
L'uso moderno Decrescente Aumento

✅ Utilizza SAML per SSO aziendale, OIDC per app e API moderne.


Vantaggi di SAML

  • SSO tra le applicazioni utilizzando un unico accesso
  • Riduzione dell'affaticamento delle password e del rischio di riutilizzo delle credenziali
  • Gestione centralizzata degli utenti tramite IdP aziendale
  • Supporta MFA e politiche di autenticazione avanzate
  • Compatibilità di livello aziendale con i sistemi HR e le app interne

Spiegazione delle asserzioni SAML

Un'asserzione SAML è un documento XML rilasciato dall'IdP contenente dati di identità e autorizzazione. È firmato digitalmente e opzionalmente crittografato.

Elementi comuni di asserzione:

  • <Subject> – L’utente che viene autenticato
  • <AttributeStatement> – Informazioni sull’utente (ad esempio, e-mail, ruolo)
  • <Conditions> – Tempo di scadenza, restrizioni del pubblico
  • <AuthnStatement> – Dettagli sul login (ad esempio, timestamp)

Esempio (semplificato):

<saml:Assertion>
  <saml:Subject>
    <saml:NameID>jane@esadax.com</saml:NameID>
  </saml:Subject>
  <saml:AttributeStatement>
    <saml:Attribute Name="email">
      <saml:AttributeValue>jane@esadax.com</saml:AttributeValue>
    </saml:Attribute>
    <saml:Attribute Name="role">
      <saml:AttributeValue>admin</saml:AttributeValue>
    </saml:Attribute>
  </saml:AttributeStatement>
</saml:Assertion>

Implementazione di SAML SSO

  1. Registra la tua app con l'Identity Provider (IdP).

  2. Configurare lo scambio di metadati:

    • L'app fornisce i metadati del fornitore di servizi SAML (SP).
    • IdP condivide i metadati IdP (certificati, endpoint).
  3. Configura Assertion Consumer Service (ACS):

    • Questo è l'endpoint della tua app per ricevere le risposte SAML.
  4. Gestire la risposta SAML:

    • Convalidare la firma e analizzare gli attributi.
    • Creare una sessione basata su dati di asserzione.

Considerazioni sulla sicurezza

  • ✅ Convalida sempre la firma digitale della risposta SAML
  • Usa HTTPS per prevenire l'intercettazione delle asserzioni
  • Convalida audience per assicurarti che il token sia per la tua app
  • ⌛ Controllare i tempi di scadenza (NotBefore, NotOnOrAfter)
  • 🚫 Rifiuta asserzioni non firmate o manomesse

Risoluzione dei problemi

  • Firma non valida?

    • Verifica se stai utilizzando il certificato IdP corretto
  • Risposta SAML non analizzata?

    • Assicurare una codifica corretta (Base64) e una struttura XML valida
  • Pubblico non corretto?

    • Assicurati che l'ID entità SP corrisponda a quello configurato in IdP
  • Utente non trovato?

    • Controlla se la mappatura degli attributi è corretta (ad esempio, e-mail, nameID)

Glossario

  • SAML: linguaggio di markup per le asserzioni di sicurezza
  • SSO: Accesso singolo
  • IdP: Identity Provider (autentica l'utente)
  • SP: Fornitore di servizi (la tua app)
  • ACS: Assertion Consumer Service – endpoint che gestisce le risposte SAML
  • Assertion: il payload dell'identità emesso dall'IdP
  • Metadati: file XML che descrive le funzionalità e gli endpoint SP/IdP