Cos’è il Security Assertion Markup Language (SAML)?
- Glossario IAM
- Cos’è il Security Assertion Markup Language (SAML)?
Security Assertion Markup Language (SAML) è uno standard aperto basato su XML che consente a un provider di identità (IdP) di trasmettere in modo sicuro a un provider di servizi (SP) i dati di autenticazione e autorizzazione di un utente. In parole semplici, SAML è una delle principali tecnologie che consentono agli utenti di effettuare un unico accesso e utilizzare più applicazioni senza reinserire le credenziali.
A cosa serve SAML?
SAML viene generalmente utilizzato quando gli utenti hanno bisogno di accedere a più applicazioni in modo sicuro e semplice. I casi d’uso più comuni sono:
- Single Sign-On (SSO): un’unica autenticazione consente di accedere a più applicazioni, eliminando la necessità di reinserire le credenziali per ciascun servizio.
- Identità federata: SAML consente a un’organizzazione di considerare attendibili le identità emesse da un partner o da una società madre, in modo che gli utenti di un dominio attendibile possano accedere senza richiedere account separati.
- Gestione degli accessi aziendali: instradando gli accessi tramite un unico IdP, i team IT possono controllare centralmente chi può accedere a ciascuna applicazione e applicare in modo uniforme policy come l’autenticazione a più fattori (MFA).
In ogni caso d’uso, l’IdP emette un’asserzione XML firmata che arriva all’SP tramite il browser dell’utente, ed è così che i dati di autenticazione vengono trasferiti in modo sicuro senza che l’utente debba effettuare nuovamente l’accesso.
Componenti chiave di SAML
Gli scambi SAML comportano generalmente l’interazione di diversi componenti. Ecco alcuni termini fondamentali che rendono il processo di autenticazione molto più semplice da seguire:
- Principal (soggetto): l’utente che viene autenticato, principalmente una persona che tenta di accedere a un’applicazione specifica.
- Provider di identità (IdP): il sistema, come Microsoft Entra ID o Okta, che verifica l’identità dell’utente ed emette l’asserzione per consentirgli di accedere.
- Provider di servizi (SP): l’applicazione o il sito web a cui l’utente desidera accedere, che si affida all’IdP per confermarne l’identità anziché gestire le credenziali di accesso.
- Asserzione SAML: la dichiarazione XML firmata che l’IdP invia all’SP, contenente l’identità dell’utente e i dati di autorizzazione (vedi sotto per maggiori informazioni).
- Metadati: le informazioni di configurazione, come endpoint e certificati, che le due parti si scambiano preventivamente per stabilire un rapporto di attendibilità e comunicare tra loro.
- Certificato di firma: il certificato digitale contenente la chiave pubblica utilizzata dall’SP per verificare la firma dell’asserzione, stabilendo un rapporto di attendibilità tra l’SP e l’IdP per confermare che l’asserzione non sia stata modificata durante il transito.
Come funziona l’autenticazione SAML?
L’autenticazione SAML funziona trasmettendo un’asserzione firmata dall’IdP all’SP, a conferma del fatto che l’utente sia chi dice di essere. Il flusso avviato dal provider di servizi (SP) è la modalità più comune di autenticazione SAML e inizia quando l’utente visita il sito web o apre l’applicazione che desidera utilizzare. Se l’applicazione si affida a un IdP esterno per l’accesso, reindirizza il browser dell’utente all’IdP con una richiesta di autenticazione SAML. L’IdP verifica quindi le credenziali dell’utente per autenticarlo; se l’utente ha già una sessione attiva, questo passaggio viene saltato. Una volta completata la verifica, l’IdP genera un’asserzione firmata e la rimanda all’SP attraverso il browser. Infine, l’SP convalida la firma dell’asserzione, la considera attendibile e consente all’utente di accedere senza che sia necessario un accesso separato. Sebbene l’autenticazione avviata dall’SP sia la più comune per SAML, esiste anche un flusso avviato dall’IdP, in cui l’utente inizia invece dall’IdP, ad esempio facendo clic sul riquadro di un’applicazione nella dashboard aziendale.
Cos’è un’asserzione SAML?
Un’asserzione SAML è il documento XML firmato che l’IdP invia al provider di servizi per attestare l’identità di un utente. Ogni asserzione può contenere una o più dichiarazioni, ovvero le informazioni effettive che l’SP utilizza per decidere se all’utente deve essere concesso l’accesso. Esistono tre tipi di dichiarazioni:
- Le dichiarazioni di autenticazione confermano chi è l’utente, quando ha effettuato l’accesso e in che modo (ovvero se è stata utilizzata l’MFA).
- Le dichiarazioni di attributi contengono informazioni aggiuntive sull’utente, come il suo ruolo o reparto. L’SP può utilizzare questi attributi per decidere cosa l’utente può vedere o fare.
- Le dichiarazioni relative alle decisioni di autorizzazione indicano se all’utente viene concesso l’accesso a una determinata risorsa. Questo tipo di dichiarazione viene utilizzato raramente, poiché un’autorizzazione più complessa viene in genere gestita da eXtensible Access Control Markup Language (XACML).
SAML vs altri standard di autenticazione
SAML è spesso associato ad altri protocolli di identità e accesso che svolgono compiti correlati ma distinti. Lo scopo principale di SAML è gestire l’autenticazione, dimostrando chi è un utente e se è autorizzato ad accedere a un sito web o a un’applicazione. Questa funzione di autenticazione distingue SAML da OAuth, un protocollo di autorizzazione che consente a un’applicazione di accedere a risorse specifiche. SAML e OAuth sono complementari anziché concorrenti, con SAML che conferma l’identità e OAuth che concede l’accesso.
OpenID Connect (OIDC) è più simile a SAML poiché entrambi autenticano gli utenti e abilitano l’SSO. Tuttavia, OIDC è un livello di autenticazione basato su OAuth che utilizza i JSON Web Token (JWT) adatti alle moderne applicazioni web e per dispositivi mobili, mentre l’approccio basato su XML di SAML è ancora ampiamente utilizzato per l’SSO web aziendale, sebbene OIDC sia sempre più la scelta predefinita per le nuove applicazioni. In confronto, Lightweight Directory Access Protocol (LDAP) è un protocollo di directory più datato che precede il cloud ed è progettato per ambienti on-premise. LDAP non è in concorrenza con SAML: viene spesso utilizzato dal relativo IdP come fonte delle credenziali degli utenti.
| SAML | OAuth | OIDC | LDAP | |
|---|---|---|---|---|
| Cosa fa | Autenticazione e SSO | Autorizzazione | Autenticazione (basata su OAuth) | Accesso alla directory |
| Formato | Asserzione XML firmata | Token di accesso | JWT | Query di directory |
| Ideale per | SSO per applicazioni web aziendali | Accesso delegato alle API | Applicazioni mobili e cloud-native | Directory on-premise |
SAML
OAuth
OIDC
LDAP
Pro e contro di SAML
SAML offre numerosi vantaggi, ma richiede anche compromessi che devono essere ben compresi prima dell’adozione.
Vantaggi di SAML
Il principale vantaggio di SAML è che riduce al minimo il numero di password che gli utenti devono gestire. Con un unico accesso che consente di accedere a più applicazioni, gli utenti hanno meno credenziali da ricordare, riducendo al minimo la superficie di attacco e il rischio di furto di credenziali. Poiché l’autenticazione avviene tramite un unico IdP, le organizzazioni ottengono anche un controllo centralizzato delle policy; i team di sicurezza possono applicare l’MFA in modo coerente a ogni applicazione connessa da un’unica posizione. Questa centralizzazione porta vantaggi, riducendo i costi dell’help desk grazie alla diminuzione delle richieste di reimpostazione delle password che generalmente sovraccaricano il supporto IT.
Svantaggi di SAML
I vantaggi di SAML si ottengono solo con una configurazione corretta. Si basa su XML Signature e XML Encryption per l’integrità e la riservatezza dei messaggi, insieme a TLS per la sicurezza del trasporto. Una delle vulnerabilità SAML più comuni riguarda l’errata configurazione, come la mancata corretta convalida delle firme. Il suo modello basato su XML è meno flessibile rispetto ai moderni formati di token, rendendo complessa l’implementazione di SAML per le applicazioni mobili e a pagina singola.