SAML vs OIDC
SAML e OIDC sono i due protocolli di autenticazione più popolari utilizzati nell'industria SSO. Questo articolo confronterà SAML e OIDC in termini di architettura e casi d'uso.
Cos'è SAML?
SAML (Security Assertion Markup Language) è uno standard aperto basato su XML per lo scambio di dati di autenticazione e autorizzazione tra diverse parti, in particolare tra un fornitore di identità (IdP) e un fornitore di servizi (SP). Consente il SSO (Single Sign-On) basato sul web permettendo agli utenti di autenticarsi una volta per accedere a più applicazioni. SAML è un protocollo maturo in uso da molto tempo ed è ampiamente adottato dalle imprese. Alcune delle più popolari piattaforme SaaS come Salesforce, Workday e Microsoft Azure AD supportano il SAML SSO.
Componenti del SAML
- Fornitore di identità (IdP): L'entità che autentica gli utenti e fornisce informazioni sull'identità ai fornitori di servizi.
- Fornitore di servizi (SP): L'entità che fornisce servizi agli utenti e si affida al fornitore di identità per autenticare gli utenti.
- Asserzioni SAML: Documenti basati su XML che trasportano i dettagli di autenticazione e autorizzazione dell'utente. Includendo dichiarazioni di autenticazione, dichiarazioni di attributi e dichiarazioni di decisioni di autorizzazione.
- Protocollo SAML: Definisce il formato del messaggio e le regole per lo scambio di asserzioni SAML tra IdP e SP.
- Binding SAML: Definisce come i messaggi SAML vengono trasportati su diversi protocolli di comunicazione come HTTP POST, HTTP Redirect, ecc.
- Metadati SAML: Documenti basati su XML che contengono le informazioni di configurazione dell'IdP e dello SP. Include la chiave pubblica, gli endpoint e i binding supportati utilizzati per stabilire la fiducia tra IdP e SP.
- Endpoint di accesso singolo: L'endpoint dove lo SP reindirizza l'utente per autenticarsi con l'IdP.
- URL del servizio di consumo delle asserzioni (ACS): L'endpoint dove l'IdP invia l'asserzione SAML dopo un'autenticazione riuscita.
Come funziona SAML?
- Flusso SSO iniziato da SP:
- Flusso SSO iniziato da IdP:
Vantaggi del SAML
- Maturo e ampiamente adottato: SAML è un protocollo maturo in uso da molto tempo ed è ampiamente adottato dalle imprese.
- Standardizzato: SAML è uno standard aperto mantenuto da OASIS, garantendo l'interoperabilità tra diversi fornitori.
- SSO: SAML consente il SSO basato sul web permettendo agli utenti di autenticarsi una volta per accedere a più applicazioni.
- Gestione centralizzata degli utenti: SAML consente alle organizzazioni di gestire le identità degli utenti in modo centralizzato e di applicare politiche di sicurezza in modo coerente.
Sfide del SAML
- Complessità: SAML è un protocollo complesso che richiede una comprensione approfondita dei concetti XML e di sicurezza.
- Prestazioni: I messaggi SAML sono basati su XML e possono essere grandi. La consegna e l'analisi dell'XML possono essere più lente rispetto ai formati di token come JSON Web Token (JWT).
- Standard obsoleto: SAML è uno standard più vecchio rispetto a OIDC e considerato meno sicuro.
- Blocco del fornitore: SAML è un protocollo specifico del fornitore, e passare da un fornitore all'altro può essere una sfida.
Cos'è OIDC?
OIDC (OpenID Connect) è uno strato di identità costruito sopra il protocollo OAuth 2.0. Simile a SAML, anche OIDC è utilizzato per lo scambio di dati di autenticazione e autorizzazione tra IdP e SP.
Rispetto a SAML, OIDC è un protocollo più moderno e leggero che sta guadagnando popolarità per le applicazioni web e mobili moderne. OIDC utilizza JWT per la trasmissione delle informazioni dell'identità, che è più compatto e più facile da gestire rispetto alle asserzioni SAML basate su XML. È particolarmente popolare per le applicazioni rivolte ai consumatori e per la sicurezza delle API.
Componenti di OIDC
- Fornitore di identità (IdP): L'entità che autentica gli utenti e fornisce informazioni sull'identità ai fornitori di servizi.
- Parte affidabile (RP): L'entità che fornisce servizi agli utenti e si affida al fornitore di identità per autenticare gli utenti. Ad esempio applicazioni web, app mobili o API.
- Token OIDC: Token che trasportano le informazioni sull'identità dell'utente.
- ID token: Token in formato JWT che contiene informazioni sull'identità dell'utente.
- Access token: Token in formato JWT o opaco che garantisce l'accesso alle risorse protette.
- Refresh token: Token utilizzato per ottenere un nuovo token di accesso senza richiedere all'utente di ri-autenticarsi. Fornisce un'autorizzazione offline a lungo termine alla RP.
- Endpoint OIDC: Endpoint utilizzati per l'autenticazione e lo scambio di token. Alcuni degli endpoint più importanti sono:
- Endpoint di scoperta: Dove la RP può recuperare le informazioni di configurazione pubblica OIDC dall'IdP.
- Endpoint di autorizzazione: Dove la RP invia la richiesta di autenticazione.
- Endpoint di token: Dove la RP richiede al server di autorizzazione i token.
- Endpoint delle informazioni utente: Dove la RP può recuperare le informazioni del profilo dell'utente.
- Ambiti: OIDC definisce un insieme di ambiti standard che definiscono i diritti di accesso concessi alla RP. Come
openid
,profile
,email
,address
, ecc.
Come funziona OIDC?
OIDC fornisce diversi flussi esplicitamente progettati per diversi casi d'uso. Ecco i due flussi OIDC più comuni:
- Flusso di codice di autorizzazione:
Il flusso di codice di autorizzazione è il flusso più comune utilizzato in OIDC per le applicazioni rivolte ai consumatori.
- Flusso di credenziali client:
Il flusso di credenziali client può essere utilizzato per l'autenticazione non basata sugli utenti (macchina-a-macchina).
Vantaggi di OIDC
- Moderno e leggero: OIDC è un protocollo moderno che impiega token JWT basati su JSON, che sono più compatti e più facili da gestire rispetto alle asserzioni SAML basate su XML.
- Applicazioni rivolte ai consumatori: OIDC è particolarmente popolare per le applicazioni rivolte ai consumatori e per la sicurezza delle API.
- Interoperabilità: Costruito sopra OAuth 2.0, OIDC è compatibile con diverse piattaforme, dispositivi e piattaforme.
- Sicurezza: OIDC offre un metodo più sicuro per l'autenticazione utente e la protezione dell'API. Incorpora diverse funzionalità di sicurezza moderna come introspezione del token, revoca del token, Proof Key for Code Exchange (PKCE) e supporta diversi flussi di autenticazione adattati a varie esigenze di sicurezza.
- Facilità d'uso: OIDC è più semplice da implementare e da gestire rispetto a SAML. È più amico degli sviluppatori e dispone di librerie e SDK completi per diversi linguaggi di programmazione e piattaforme.
Sfide di OIDC
- Gestione dei token: OIDC si basa sui token per l'autenticazione e l'autorizzazione. Richiede pratiche adeguate di gestione dei token per garantire la sicurezza.
- Complessità: Anche se OIDC è semplice per configurazioni di base, a causa della sua natura flessibile, può aggiungere complessità quando si implementano personalizzazioni avanzate. Ad esempio dichiarazioni personalizzate e controllo degli accessi basato sui ruoli (RBAC), ecc.
- Adozione: OIDC è ancora relativamente nuovo rispetto a SAML, specialmente nel settore enterprise. Alcuni sistemi legacy potrebbero ancora fare affidamento su SAML per scopi SSO.
Confronto SAML vs OIDC
Aspetto | SAML | OIDC |
---|---|---|
Formato token | Asserzioni SAML basate su XML | Token JWT basati su JSON |
Caso d'uso primario | SSO aziendale, integrazioni B2B | App rivolte ai consumatori, sicurezza API |
Facilità d'uso | Complesso, richiede una comprensione approfondita di XML | Semplice, basato su JSON, facile da implementare |
Adozione | Ampiamente adottato dalle imprese | In aumento popolarità per app moderne |
Sicurezza | Maturo ma considerato meno sicuro | Moderno, e più sicuro |
Flessibilità | Limitata, progettata per casi d'uso SSO | Flessibile, supporta vari casi d'uso |
Futuro di SAML e OIDC
Entrambi SAML e OIDC sono ampiamente utilizzati per scopi di autenticazione e autorizzazione.
SAML rimane un pilastro per l'SSO aziendale e le integrazioni B2B. Il suo supporto robusto per la gestione delle identità federate e la comprovata esperienza ne assicurano la rilevanza continua, particolarmente per i sistemi legacy e le organizzazioni su larga scala.
OIDC, d'altra parte, continua a evolversi, guidato dalla domanda di autenticazione sicura e scalabile nelle applicazioni moderne. La sua natura leggera e l'allineamento con le API e i microservizi ne fanno un pilastro per le architetture cloud-native e distribuite. Con l'aumento dell'autenticazione passwordless, della biometria e dell'autenticazione multi-fattore (MFA), si prevede che OIDC si integri senza problemi con le tecnologie emergenti, garantendo la sua rilevanza negli anni a venire.