Protocolli di Autenticazione web: SAML 2.0 #authentication #saml #siglesignon

Inauguro i miei articoli su sipronunciaaigor con una introduzione ai protocolli di autenticazione in ambito web, ed in particolare il protocollo SAML (Security Assertion Markup Language).

Cos’è un protocollo di autenticazione sul web?

Innanzitutto cos’è un protocollo di autenticazione sul web? A cosa serve? Che vantaggi comporta?

Un protocollo di autenticazione in ambito web definisce la struttura dei messaggi che devono essere scambiati tra diversi attori per completare l’autenticazione utente in maniera affidabile e protetta.

Qual è il principale vantaggio nell’utilizzare un protocollo di autenticazione anziché affidarsi ai classici meccanismi di autenticazione embedded nelle proprie applicazioni web? Innanzitutto i protocolli di autenticazione come SAML offrono la cosiddetta funzionalità di Single Sign-On ovvero la possibilità di sfruttare una singola autenticazione per accedere a più applicativi diversi all’interno della stessa sessione di lavoro. Inoltre evitano alle singole applicazioni la gestione della fase di autenticazione, delegandola ad un sistema esterno considerato affidabile.

SAML

SAML è uno standard OASIS nato nel 2002 la cui attuale versione (v2.0) risale al 2005. Questo protocollo definisce due attori principali:

  • Service Provider, ovvero le applicazioni web che desiderano utilizzare il protocollo per l’autenticazione dei propri utenti,
  • gli Identity Provider, ovvero le applicazioni web che gestiscono la fase di autenticazione per conto dei Service Provider ad essi integrati.

Come avviene la comunicazione tra questi attori? Ovviamente tramite messaggi XML (guarda un po’ che novità), che vengono scambiati attraverso semplici GET e/o POST HTTP governate dal browser dell’utente. In particolare sono stati definiti due costrutti principali:

  • <AuthnRequest>: utilizzati dai Service Provider per inviare richieste di autenticazione agli Identity Provider, e
  • <Response>: utilizzati dagli Identity Provider per comunicare l’esito dell’autenticazione ai Service Provider.

Ovviamente delegare la fase di autenticazione ad un IdP (Identity Provider) esterno, potenzialmente gestito da persone differenti dai gestori dei SP (Service Provider), significa far circolare in rete messaggi contenenti informazioni personali (o persino sensibili) che potrebbero essere raccolte o addirittura modificate da malintenzionati, per questo SAML permette la cifratura delle informazioni personali e la firma digitale dei messaggi <AuthnRequest> e <Response> scambiati, oltre a consigliare vivamente l’utilizzo di connessioni sicure (HTTPS).

Direi che come introduzione al tema può bastare, in attesa dei miei prossimi interventi, vi segnalo giusto qualche link di approfondimento

[1] Home page dello standard SAML: http://saml.xml.org/

[2] OpenSAML, implementazione in Java e C++ del protocollo SAML: https://wiki.shibboleth.net/confluence/display/OpenSAML/Home

[3] IdPC: Identity Provider dei Cittadini della Regione Lombardia: http://www.crs.lombardia.it/

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...