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.
SimengDeveloper
Smetti di sprecare settimane sull'autenticazione degli utenti
Lancia app sicure più velocemente con Logto. Integra l'autenticazione degli utenti in pochi minuti e concentrati sul tuo prodotto principale.
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.
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.
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.
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.
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.
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.
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.
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.
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.