Securing .Net WebAPI with JWT Token

Ieri insieme ad un collega abbiamo cercato un template per creare un WebAPI in .Net … tutti quelli che abbiamo trovato erano relativi a .Net Core. Sono quindi andato a cercare un articolo che avevo utilizzato nel 2017 (fortunatamente avevo salvato la url!)

Il tutorial  “Authorization” presente su Auth0.com è il miglior punto di partenza per costruire un web API .NET con autenticazione basata su token JWT che sono riuscito a trovare.

Nota: il tutorial si riferisce a .Net non a .Net Core

Negli esempi collegati al tutorial il ruoli id Identity Server (Token Issuer) è svolto dal servizio di autenticazione offerto da Auth0 … ovviamente visto che stiamo utilizzando dei protocolli e formati standard se ne può utilizzare anche un altro oppure sviluppare un servizio di autenticazione custom.

Web application with WebAPI and JWT Token issuer

Oltre al tutorial ci sono due applicazioni in un repository GitHub

La prima applicazione di esempio è un template “vuoto” da cui partire per costruire una WebAPI .NET

https://github.com/auth0-samples/auth0-aspnet-owin-webapi-samples/tree/master/Quickstart/00-Starter-Seed/WebApi/WebApi 

La seconda è una applicazione più completa realizzata seguendo il tutorial “Authorization” che include il sistema di autenticazione ed autorizzazione ed anche un attributo custom “scopeAuthorize” che sfrutta i claim di tipo “scope” presenti nel token per determinare se l’utente ha accesso alla risorsa richiesta.

https://github.com/auth0-samples/auth0-aspnet-owin-webapi-samples/tree/master/Quickstart/01-Authorization/WebApi/WebApi

Nella cartella Samples ci sono anche altri due esempi “completi” in cui la validazione del token utilizza rispettivamente la modalità RS256 (crittografia asimmetrica) e HS256 (crittografia simmetrica). Su questo dettaglio ci sarebbe molto da dire … approfondiremo in un post dedicato.

Nel tutorial “Using your API” sempre su Auth0 è dimostrato l’uso della WebAPI creata precedentemente simulando un client tramite Postman.

 

 

Rispondi

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

Logo di WordPress.com

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

Google photo

Stai commentando usando il tuo account Google. 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 )

Connessione a %s...