• sso
  • saml
  • oidc

Quali sono le differenze tra SAML e OIDC?

In questo articolo, forniamo una panoramica dei protocolli SAML e OIDC, insieme ai loro tipici flussi di autenticazione. Confrontiamo le differenze distintive, i pro e i contro di ciascun protocollo. Inoltre, in base a potenziali scenari utente, offriamo indicazioni su come scegliere tra questi due protocolli.

Darcy Ye
Darcy Ye
Developer

OpenID Connect (OIDC) e Security Assertion Markup Language (SAML) sono protocolli di autenticazione che consentono ai Fornitori di Identità (IdP) di implementare l'autenticazione degli utenti e il controllo dell'accesso. Ogni protocollo definisce il proprio meccanismo per mantenere l'identità degli utenti autenticati, che viene poi utilizzata per concedere o negare l'accesso alle applicazioni protette.

Cosa sono SAML e OIDC?

Gli IdP mantengono database di informazioni sull'identità degli utenti. I Fornitori di Servizi (SP) fanno affidamento su queste informazioni per autenticare gli utenti, a volte consentendo a un'unica autenticazione di essere utilizzata su più applicazioni (single sign-on). OIDC e SAML sono standard che definiscono come queste informazioni relative all'identità degli utenti fluiscono tra queste due parti. Il loro obiettivo finale è lo stesso: l'autenticazione dell'utente. Tuttavia, gli approcci fondamentali che adottano per raggiungere questo obiettivo differiscono.

SAML

SAML 2.0, dal 2005, è la versione attuale dello standard. Utilizza XML per formattare informazioni di identità, richieste e risposte. XML è uno standard maturo per formattare documenti in un modo comprensibile sia agli esseri umani che ai computer. Per trasmettere o ricevere informazioni codificate in XML, utilizza richieste SOAP o HTTP di base. Definito dal protocollo SAML, il servizio che richiede informazioni di identità è il Fornitore di Servizi (SP).

Prima di introdurre il tipico processo di autenticazione SAML, dobbiamo comprendere gli elementi sui quali si basa l'autenticazione SAML. Prima che IdP e SP possano riconoscersi e completare il processo di autenticazione, devono "scambiare" le informazioni necessarie, solitamente realizzate attraverso metadati formattati in XML. Le informazioni scambiate includono:

  • Chiavi pubbliche, con IdP e SP che generano le proprie coppie di chiavi privata e pubblica e le scambiano per firmare o criptare le comunicazioni. Con i progressi nella sicurezza delle comunicazioni di rete, nella maggior parte degli scenari attuali è necessario solo firmare le richieste, omettendo il passaggio di crittografia.
  • Endpoint, utilizzati per l'SP per inviare richieste di autenticazione SAML all'IdP e per l'SP per ricevere asserzioni SAML in risposta alle richieste di autenticazione dall'IdP.
  • Formati di attributi XML supportati, utilizzati per l'IdP per trasmettere le informazioni necessarie sull'utente all'SP dopo aver completato l'autenticazione.

Una volta che IdP e SP sono a conoscenza delle suddette informazioni, possono procedere con il processo di autorizzazione (un tipico flusso di autenticazione avviato dall'SP):

OIDC

OIDC è un protocollo contemporaneo che migliora il framework OAuth 2.0. Impiega JSON-based Web Tokens (JWT) per costruire payload di dati. I JWT, una norma industriale consolidata, stabiliscono linee guida per lo scambio sicuro e la rappresentazione delle rivendicazioni tra entità. Queste rivendicazioni, essenzialmente dati dell'utente crittografati, sono cruciali per la verifica e la gestione dell'identità. OIDC utilizza prevalentemente l'HTTPS per la trasmissione dei dati.

Come è ampiamente riconosciuto, il protocollo OIDC supporta una varietà di flussi diversi, tra cui il flusso del codice di autorizzazione, il flusso implicito e il flusso ibrido. Nell'esempio seguente, esamineremo il più sicuro e tipico di questi: il flusso del codice di autorizzazione. Questo è anche il flusso utilizzato da Logto.

Aspetti distintivi di OIDC e SAML

  • Dato il suo sviluppo più recente, OIDC è meglio adatto per l'autenticazione delle applicazioni moderne rispetto al più vecchio standard SAML.
  • Storicamente, SAML precede OIDC ed è stato integrato in numerosi sistemi aziendali consolidati.
  • Al contrario dei documenti XML più pesanti di SAML, i JWT di OIDC sono compatti e più facili da elaborare.
  • Configurare OIDC è generalmente più semplice rispetto a SAML.
  • Una caratteristica chiave di OIDC è la sua definizione di "scopes", che consente agli IdP di gestire una varietà di permessi. Le applicazioni possono richiedere permessi specifici dagli IdP, che vengono concessi al momento dell'approvazione dell'utente. Questa caratteristica di OIDC offre agli IdP un controllo granulare sui permessi.

Come si dovrebbe scegliere tra OIDC e SAML?

Entrambi OIDC e SAML sono sistemi di autenticazione robusti, ciascuno con i propri punti di forza unici. La scelta dipende dalle esigenze specifiche della tua organizzazione.

  • Per un'implementazione rapida ed efficiente della piattaforma di identità, OIDC è preferibile a SAML. Implementare OIDC è più semplice, evitando la complessità della gestione degli XML che SAML richiede per l'analisi dei metadati, l'elaborazione delle richieste di autenticazione e l'analisi delle asserzioni SAML.
  • OIDC è ideale per ambienti con ampie interazioni API e meccanismi di permessi sofisticati, offrendo un controllo più adattabile ed efficiente sui permessi e una migliore esperienza per gli sviluppatori.
  • Quando si integra con sistemi consolidati che sono basati su SAML, scegliere SAML garantisce una migliore interoperabilità del sistema e riduce lo sforzo necessario per collegare protocolli diversi.

Esistono soluzioni valide disponibili sul mercato?

Logto, una soluzione di identità popolare tra gli sviluppatori, ha recentemente introdotto la funzionalità di Enterprise SSO. Offre supporto per entrambi i protocolli SAML e OIDC, insieme a integrazioni pronte all'uso per i principali IdP come Google Workspace e Microsoft Entra ID (precedentemente Azure AD). Con Logto, puoi bypassare le complessità dell'implementare SSO autonomamente. Alcuni semplici passaggi di configurazione consentono il supporto SSO nel tuo sistema di identità, permettendoti di selezionare il protocollo appropriato per soddisfare le esigenze aziendali.