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.
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
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.
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.