• OIDC
  • SAML
  • SSO
  • authentication
  • authorization

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.

Simeng
Simeng
Developer

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

  1. Fornitore di identità (IdP): L'entità che autentica gli utenti e fornisce informazioni sull'identità ai fornitori di servizi.
  2. Fornitore di servizi (SP): L'entità che fornisce servizi agli utenti e si affida al fornitore di identità per autenticare gli utenti.
  3. 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.
  4. Protocollo SAML: Definisce il formato del messaggio e le regole per lo scambio di asserzioni SAML tra IdP e SP.
  5. Binding SAML: Definisce come i messaggi SAML vengono trasportati su diversi protocolli di comunicazione come HTTP POST, HTTP Redirect, ecc.
  6. 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.
  7. Endpoint di accesso singolo: L'endpoint dove lo SP reindirizza l'utente per autenticarsi con l'IdP.
  8. URL del servizio di consumo delle asserzioni (ACS): L'endpoint dove l'IdP invia l'asserzione SAML dopo un'autenticazione riuscita.

Come funziona SAML?

  1. Flusso SSO iniziato da SP:
  1. 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

  1. Fornitore di identità (IdP): L'entità che autentica gli utenti e fornisce informazioni sull'identità ai fornitori di servizi.
  2. 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.
  3. 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.
  4. 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.
  5. 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:

  1. Flusso di codice di autorizzazione:

Il flusso di codice di autorizzazione è il flusso più comune utilizzato in OIDC per le applicazioni rivolte ai consumatori.

  1. 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

AspettoSAMLOIDC
Formato tokenAsserzioni SAML basate su XMLToken JWT basati su JSON
Caso d'uso primarioSSO aziendale, integrazioni B2BApp rivolte ai consumatori, sicurezza API
Facilità d'usoComplesso, richiede una comprensione approfondita di XMLSemplice, basato su JSON, facile da implementare
AdozioneAmpiamente adottato dalle impreseIn aumento popolarità per app moderne
SicurezzaMaturo ma considerato meno sicuroModerno, e più sicuro
FlessibilitàLimitata, progettata per casi d'uso SSOFlessibile, 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.