Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Scribe: autenticazione con OAuth

Prima di analizzare il funzionamento della libreria Scribe affrontiamo il discorso riguardante OAuth, una piattaforma completa per gestire le procedure di autenticazione.
Prima di analizzare il funzionamento della libreria Scribe affrontiamo il discorso riguardante OAuth, una piattaforma completa per gestire le procedure di autenticazione.
Link copiato negli appunti

In ambito informatico, l'autenticazione è quel processo mediante il quale un sistema conferma l'identità di
una persona presso un sistema al fine di consentire l'accesso alle sue risorse. Esistono diversi modi con i
quali un sistema può identificare i propri utenti. A prescindere dai dettagli implementativi, tutte le procedure di
autenticazione si basano sul richiedere qualcosa che l'utente ha o possiede. I meccanismi più noti sono quelli
basati su username e password e quelli basati su smartcard.

OAuth2

Per evitare di dover gestire direttamente l'autenticazione degli utenti è possibile affidarsi a delle autorità
esterne che verifichino al posto del nostro sistema le credenziali. A tal fine, è nato nel 2006 il
protocollo di sicurezza Open Authorization, OAuth, oggi arrivato alla
versione 2.

Quando si parla di OAuth normalmente è possibile individuare diversi attori in gioco:

  • il client: è l'applicazione che tenta di accedere all'account dell'utente. Detto in altre
    parole è la nostra applicazione.
  • L'authorization server è il server che si preoccupa di identificare l'utente e accede alle
    informazioni dell'utente. Nelle
    implementazioni più complesse l'accesso alle informazioni dell'utente vengono gestite da un Resource
    Server
    .
  • Il resource owner: è l'entità proprietaria di dati ad accesso controllato.

Il funzionamento di OAuth può essere rappresentato dal sequence diagram sotto riportato:

OAuth - Abstract Protocol Flow

Figura 1. OAuth - Abstract Protocol Flow

Vediamo le varie fasi:

  1. il client richiede l'autorizzazione al resource owner.
  2. Viene restituito un authorization grant che rappresenta l'autorizzazione del resource owner. La
    specifica definisce 4 tipi di grant: authorization code, implicit, resource owner password credentials e client
    credentials
    .
  3. Il client richiede un access token all'authorization server grazie all'authorization grant ottenuto allo
    step
    precedente.
  4. L'authorization server autentica il client, valida l'authorization grant e rilascia un access token.
  5. Il client richiede la risorsa al resource server mediante l'access token.
  6. Il resource server valida il token e fornisce le risorse richieste.

La sequenza di operazioni appena presentata è un sequence diagram di massima, nel senso che in base al tipo di grant concesso il flusso delle operazioni cambia. Vediamo ora questi 4 tipi di flussi.

Authorization Code Flow

L'idea alla base di OAuth è la seguente: quando un utente vuole utilizzare l'applicazione (client), deve autorizzare
l'authorization server a fornire i suoi dati all'applicazione client. L'applicazione client deve essere
registrata presso l'authorization server.

Normalmente nella fase di registrazione vengono generati un ID
client
ed un secret (altro modo di dire password). Questa coppia di valori viene in
seguito utilizzata per generare
i token utilizzati nella comunicazione sicura, in termini di veridicità dell'informazione stessa,
senza la necessità di far girare la password dell'utente.

OAuth al giorno d'oggi viene utilizzata da una moltitudine di azienda del settore IT tra cui vale la pena citare
Twitter, Google, Microsoft e Facebook. Per maggiori informazioni su OAuth è possibile consultare questo articolo.

Si vedrà nei prossimi paragrafi come utilizzare OAuth ed interagire con i vari Authorization Server con l'ausilio di una libreria open source scritta in Java e presente su GitHub: Scribe.

Ti consigliamo anche