JWT, OAuth, OpenIdConnect

in dotnet core 3, Informatica

JWT, OAuth, OpenIdConnect ed Endpoint

Reading Time: 2 minutes

Questo articolo si era perso nelle bozze da diverso tempo. Complice il periodo pasquale, ho deciso di rimetterci mano e pubblicarlo. Tratta temi legati all’autenticazione e autorizzazione, che sono tuttora validi.

Il primo passo è quello di definire che cos’è un token. Se vogliamo accedere ad una risorsa protetta, il primo passo è quello di richiedere un token. Parlando di sicurezza basata su toke, molto spesso stiamo parlando di JWT o ti token web Json. Senza entrare nei dettagli, possiamo considerarlo come un oggetto Json che viene utilizzato per lo scambio sicuro dei dati.

Flusso per lo scambio dei dati tramite token

I passaggi per ottenere un token sono:

  • un utente fornisce le credenziali al server di autorizzazione e il server risponde con un token
  • l’ utente utilizzerà il token per interagire con l’API e recuperare i dati richiesti. Naturalmente, dietro le quinte, l’API convaliderà il token e deciderà se l’utente ha accesso o meno all’endpoint richiesto
  • l’utente può utilizzare il token con un applicazione di terze parti che comunica con l’API e recupera i dati. Naturalmente, un’applicazione di terze parti deve fornire un token all’API tramite headers . Dopo la convalida del token, l’API fornisce i dati all’applicazione client che restituisce i dati a un utente

Fondamentale nel flusso è l’utilizzo del token: una volta ottenuto, non vengono piu’ utilizzate le credenziali!

OAuth2 e OpenID Connect

OAuth2 e OpenId Connect sono protocolli che ci consentono di creare applicazioni sicure.

OAuth2 è il protocollo standard per l’autorizzazione. Delega l’autenticazione dell’utente al servizio che ospita l’account dell’utente e autorizza le applicazioni di terzi ad accedere a tale account. Fornisce flussi diversi per le applicazioni, siano esse applicazioni web o applicazioni desktop o mobili. OAuth è l’acronimo di Open standard for Authorization. Le specifiche di OAuth2 sono definite a partire dall’ RFC RFC 6749, all’interno della quale vengono anche definiti gli endpoint che devono essere implementati/utilizzati.

Con l’autorizzazione viene garantito l’accesso ad un particolare sistema. Ma se vogliamo aggiungere lo strato di autenticazione, è necessario inserire un ulteriore strato: Open Id Connect. Il ruolo di OpenID Connect è proprio quello di integrare OAuth2 con la parte di autenticazione. Avevo già introdotto OpenId Connect in un post precedente.

Endpoint e flussi OAuth2 e OpenID

E’ possibile implementare differenti flussi di accesso, ciascuno con caratteristiche differenti. La descrizione dei flussi è riportata all’interno dell’ RFC 6749. I flussi che possono essere utilizzati sono : Implicit, Authorization Code, Resource Owner Password Credentials, Client Credentials, Hybrid.

Il flusso consente di definire le modalità con cui il token verrà emesso

Non è l’obiettivo di questo post quello di descrivere i singoli flussi.

Gli endpoint che possono utilizati con OAuth2 sono:

  • /token– un client utilizza questo endpoint per scambiare una concessione di autorizzazione con un token di accesso. Questo endpoint viene utilizzato anche per le azioni di aggiornamento del token
  • /authorize– un client utilizza questo endpoint (endpoint di autorizzazione) per ottenere l’autorizzazione dal proprietario della risorsa. Possiamo utilizzare diversi flussi per ottenere l’autorizzazione e ottenere l’accesso all’API
  • /revocation – questo endpoint abilita l’azione di revoca del token

Aggiungendo Open Id Connect, vengono aggiunti i seguenti endpoint:

  • /userinfo – recupera le informazioni sul profilo dell’utente finale
  • /checksession – controlla la sessione dell’utente corrente
  • /endsession – termina la sessione per l’utente corrente

Identity Server 4

Identity Server 4 è un progetto open source che consente di implementare OAuth2 e Open Id Connect all’interno di applicazioni .NET .

In questo post era già stato introdotto Identity Server 4.

A questo link è possibile scaricare un esempio di applicazione .NET CORE 3.1 che utilizza Identity Server4.

A questo link è possibile scaricare un link di applicazione .NET CORE 3.1 che utilizza Identity Server 4 e token JWT.

  • Articoli Correlati per Tag :