Una guida per sviluppatori all’autenticazione SAML [3 Online Tools]

Nel mondo di oggi, semplificare la gestione delle password è essenziale. Con il progresso delle aziende nella digitalizzazione, i dipendenti utilizzano strumenti di collaborazione, messaggistica e archiviazione più che mai.

Ciò rappresenta una sfida per gli sviluppatori: come si fornisce ai dipendenti un accesso sicuro alle applicazioni interne e ai dati archiviati nel cloud? Per molti, la risposta è l’autenticazione SAML!

Cos’è SAML?

Security Assertion Markup Language o SAML è uno standard aperto che semplifica i processi di autenticazione. Si basa su XML (Extensible Markup Language), che standardizza la comunicazione tra le entità da autenticare e il servizio web o l’applicazione. In altre parole, SAML è ciò che rende possibile utilizzare un unico login per accedere a più applicazioni diverse.

Da un lato, un fornitore di servizi necessita dell’autenticazione del provider di identità (IdP) per concedere l’autorizzazione all’utente. Ad esempio, Salesforce è un fornitore di servizi che si affida a un provider di identità per l’autenticazione dell’utente.

D’altra parte, un provider di identità autentica che l’utente finale è chi dice di essere e invia tali dati al provider di servizi insieme ai diritti di accesso dell’utente al servizio. Un esempio è AuthO, uno dei leader nella fornitura di soluzioni di identità.

Che dire del Single Sign-On SAML?

Uno dei ruoli principali di SAML è abilitare SSO. Prima di SAML, SSO era possibile ma dipendeva dai cookie e praticabile solo sullo stesso dominio.

SAML abilita il Single Sign-On (SSO) consentendo agli utenti di accedere a più applicazioni con un unico login e set di credenziali. Sebbene SAML non sia nuovo, esiste dal 2002 e molte nuove applicazioni e società SaaS utilizzano SAML per SSO. La sua versione più recente, SAML 2.0, abilita l’SSO cross-domain basato sul Web ed è lo standard per l’autorizzazione delle risorse.

Quali sono i vantaggi dell’autenticazione SAML?

SAML offre molti vantaggi per la sicurezza, gli utenti e altri fornitori di servizi (SP).

Semplicità: gli utenti accedono all’IdP solo una volta e quindi godono di un accesso continuo e più sicuro a tutte le applicazioni.

Maggiore sicurezza: molti SP non hanno il tempo o le risorse per implementare e applicare l’autenticazione utente sicura all’accesso. In generale, gli IdP sono meglio attrezzati per autenticare le identità degli utenti. Restituendo l’autenticazione all’IdP, SAML consente l’autenticazione sicura che può applicare più livelli di sicurezza, come l’autenticazione a più fattori.

Esperienza utente migliorata: con SAML, i tuoi utenti possono dire addio al mal di testa del tentativo di ricordare più nomi utente e password

Spese di gestione ridotte: i fornitori di servizi possono migliorare la sicurezza della loro piattaforma senza memorizzare le password. Non è necessario occuparsi di problemi con la password dimenticata. L’help desk riduce i costi e libera i team tecnici per gestire altre richieste urgenti.

Che cos’è Auth0 e come è connesso all’autenticazione SAML?

Auth0 è una piattaforma che fornisce il servizio di autenticazione e autorizzazione dell’utente. Può essere sia come IdP che come SP. Auth0 offre un accesso universale che può essere integrato con SAML. Gli sviluppatori utilizzano spesso Auth0 con SAML per diversificare il rischio avendo più IdP.

Auth0 può essere utilizzato con quasi tutti i principali linguaggi e API. Può anche essere integrato con social provider, database e directory LDAP.

Flusso SSO SAML

Uno dei ruoli principali di SAML è abilitare il Single Sign-On (SSO). Prima di SAML, l’SSO era possibile ma dipendeva dai cookie ed era possibile solo sullo stesso dominio.

SAML abilita SSO consentendo agli utenti di accedere a più applicazioni con un unico login e credenziali. SAML non è nuovo, esiste dal 2002 e molte nuove applicazioni e società SaaS utilizzano SAML per SSO. La sua versione più recente, SAML 2.0, abilita l’SSO cross-domain basato sul Web ed è lo standard per l’autorizzazione delle risorse.

In concreto, si tratta di richiedere l’autenticazione all’utente una sola volta quando quest’ultimo utilizza applicazioni diverse. Pensiamo ad esempio all’autenticazione di Google, condivisa tra i diversi servizi Gmail, Youtube, Google Apps, ecc.

In questa modalità operativa, Google è il provider di identità (IdP) per i suoi servizi. Questi servizi sono chiamati “fornitori di servizi” (SP).

Autenticazione

Quando si connette all’applicazione esterna, invia l’utente sconosciuto all’IdP aziendale. Questo IdP è un servizio Web accessibile in HTTPS. Può essere ospitato internamente o esternamente.

Autenticazione interna

L’utente dimostra quindi la propria identità all’IdP. Questa fase può essere effettuata mediante autenticazione esplicita (login/password) o mediante la propagazione di un token preesistente.

Generazione dell’asserzione

L’IdP genererà quindi un “token”, una sorta di carta d’identità dell’utente, valida solo per il servizio richiesto e per un determinato tempo. In questo token troveremo in particolare:

  • L’identità dell’utente: login, email o altri campi
  • Attributi aggiuntivi facoltativi: cognome, nome, lingua, ecc.
  • Un periodo di validità del token
  • Una firma del token da parte dell’IdP

Trasmissione da IdP a SP

Nella modalità più pratica, l’asserzione non viene passata direttamente dall’IdP all’SP ma attraverso l’utente stesso. Attraverso un meccanismo di rimbalzo HTTP, l’IdP fornirà al browser client il token da trasmettere al provider di servizi. Può essere paragonato alla carta d’identità fornita dalla prefettura da presentare a qualsiasi autorità.

Consumo del token da parte della SP

Il provider di servizi riceve il token dall’utente. L’SP ha scelto di fidarsi di questo IdP. Convalida anche la firma e l’integrità del token, nonché il periodo di validità. Se i test sono conclusivi, l’SP apre una sessione all’utente.

Fonte: Wikipedia

Autenticazione SAML vs. Autorizzazione utente

Spesso l’autenticazione SAML viene confusa con l’autorizzazione. Per chiarezza, è importante differenziare i concetti di autenticazione e autorizzazione.

Autenticazione: è la convalida dell’identità dell’utente; in pratica, si verifica se sono chi dicono di essere. Un esempio è l’utilizzo di e-mail e password per accedere a un sistema: una singola sessione o il login per altre piattaforme.

Autorizzazione: sono le autorizzazioni che l’utente concede a uno strumento di terze parti per accedere alle risorse nel proprio account. Con l’approvazione dell’utente, il protocollo di autorizzazione scambia i token senza accedere alle sue credenziali. Di solito lo fai quando consenti a una piattaforma (come Facebook) di accedere a determinate informazioni dal tuo account Google.

Terminologie da conoscere di SAML

Affermazione SAML

Le asserzioni SAML vengono in genere trasmesse dai provider di identità ai provider di servizi. Le asserzioni contengono dichiarazioni che i fornitori di servizi utilizzano per prendere decisioni di controllo degli accessi. SAML fornisce tre tipi di dichiarazioni:

  • Le dichiarazioni di autenticazione affermano che il provider di servizi è stato effettivamente autenticato con il provider di identità in un determinato momento con un metodo di autenticazione.
  • Una dichiarazione di attributo afferma che un soggetto è associato a determinati attributi. Un attributo è semplicemente una coppia nome-valore. Le relying party utilizzano gli attributi per prendere decisioni di controllo degli accessi.
  • Una dichiarazione di decisione autorizzata afferma che un soggetto è autorizzato ad agire su una risorsa presentando prove a sostegno. L’espressività degli stati di decisione di autorizzazione in SAML è deliberatamente limitata.

Servizio consumatori di affermazione

L’Assertion Consumer Service o ACS è il punto in cui il provider di identità reindirizza dopo la risposta di autenticazione dell’utente. Il punto a cui reindirizza il provider di identità è un endpoint HTTPS che trasferisce le informazioni personali.

Stato relè predefinito

È l’URL predefinito su cui l’utente verrà reindirizzato dopo l’autenticazione del messaggio SAML. Lo stato di inoltro predefinito viene utilizzato per coordinare i messaggi tra IdP e SP.

SAML è un protocollo ampiamente utilizzato e spesso è necessario decodificare le asserzioni SAML. Di seguito sono riportati alcuni dei migliori strumenti SAML per la codifica, la decodifica e la formattazione di messaggi e asserzioni SAML:

# 1. SAMLtool

SAMltool di OneDesign è una raccolta di strumenti e toolkit SAML online. Questi includono vari strumenti per codificare e decodificare messaggi SAML, crittografare e decrittografare asserzioni e firmare e convalidare messaggi e asserzioni SAML. SAMLtool fornisce anche diversi plugin per integrare questi strumenti con diversi CMS.

#2. Samtool.io

Offerto da Auth0, samltool.io è uno strumento online che decodifica, ispeziona e verifica i messaggi e le asserzioni SAML semplicemente incollando XML non elaborato o URL contenenti richieste.

#3. Decodificatore SAM

Decodificatore SAM è un semplice strumento online per la decodifica di SAML offerto da PingIdentity. Il decodificatore SAM può essere utilizzato per decodificare, gonfiare e formattare messaggi, asserzioni e metadati SAML.

Parole finali

Lo standard SAML è molto utile per implementare un’istanza di autenticazione centrale basata sul linguaggio di markup. Uno dei suoi vantaggi significativi è che offre un’elevata efficienza e un elevato standard di sicurezza.

In particolare, il numero di possibili falle di sicurezza è ridotto al minimo poiché le singole applicazioni non devono archiviare o sincronizzare i dati dell’utente. In questo modo si raggiunge uno degli obiettivi primari, che è quello di conciliare un elevato grado di sicurezza con il miglior livello possibile di semplicità di utilizzo.

Puoi anche guardare alcune delle migliori piattaforme di autenticazione utente.