ASP.NET CORE AUTENTICAZIONE E AUTORIZZAZIONE
COMPRENDERE LE FASI DI AUTENTICAZIONE E AUTORIZZAZIONE
Autenticazione e autorizzazione sono parti cruciali per la maggior parte delle applicazioni web, prendiamo ad esempio i contenuti delle lezioni, essi non devono essere mostrati a chiunque, ma solo a un sottoinsieme di utenti, ossia coloro che il corso lo hanno acquistato. Cosi pure la modifica che dovrà essere prerogativa solo di chi ha creato il corso. Iniziamo dall’autenticazione. Supponiamo che si vada a votare, quindi ci rechiamo al seggio elettorale. Lo scrutatore non ci lascia votare subito, ma prima vuole accertarsi della nostra identità. Per farlo mostriamo un nostro documento.
Nelle applicazioni web è esattamente la stessa cosa, solo che l’utente anziché presentarsi al seggio elettorale si presenta in una pagina della nostra applicazione. Se vuole accedere a questa pagina dovrà mostrare un documento valido.
Noi non mostreremo la carta di identità ma un cookie di autenticazione, che è comunque un documento valido, emesso sa un’autorità affidabile ed esibito dal browser dell’utente.
Andiamo a vedere un po’ più da vicino com’è un cookie di autenticazione.
Si compone di un nome e di un valore, questo cookie è stato generato da ASP.NET Core e consegnato al browser dell’utente. Il browser lo ha memorizzato e lo restituisce tale e quale in tutte le successive richieste. La validità del documento consiste nell’integrità del Valore del cookie. Dentro questo valore si cela l’identità dell’utente, è cifrato e a noi utenti non avendo la chiave di cifratura ci è impossibile risalire al contenuto. L’autorità affidabile è ASP.NET Core. I cookie possono essere creati anche per altre cose, non ultimo vedere le abitudini di consumo degli utenti. Vediamo in ASP.NET Core come si ottiene un cookie di autenticazione.
Il cookie di autenticazione viene creato nella fase di Login o Registrazione, inserire e-mail e password serve per accertare la nostra identità.
Questi sono i vantaggi dei cookie.
L’autorizzazione è una fase ben distinta dalle precedenti e segue quella di autenticazione. Viene regolata sulle basi di policy ben precise.
Vediamo un breve riepilogo con la sequenza temporale.
ARCHITETTURA DI ASP.NET CORE IDENTITY
ASP.NET Core Identity è il prodotto che utilizzeremo per gestire i dati dei nostri utenti.
È composto di quattro pacchetti NuGet. Il primo AspNetCore.Identity.UI questo è il pacchetto delle interfacce utente.
Ce ne sono tante con i relativi InputModel che vedremo a mano a mano. Il secondo è AspNetCore.Identity.EntityFrameworkCore. Questo pacchetto ha a che fare con la persistenza, si occupa infatti di persistere i dati delle varie interfacce utente.
Il terzo pacchetto è Extensions.Identity.Stores. Questo pacchetto rappresenta l’identità dell’utente.
È praticamente impossibile risalire alla password dell’utente. Vediamo l’ultimo pacchetto Extensions.Identity.Core. Qui dentro troviamo Lo UserManager<TUser> classe fondamentale in questa architettura.
INSTALLARE ASP.NET CORE IDENTITY IN UN PROGETTO ESISTENTE
Vediamo come si installa prima in nuovo progetto poi in un progetto esistente.
Supponiamo che l’utente arrivi con un token di autenticazione e cerchi di visualizzare la pagina di modifica del corso. L’utente ha esibito un documento valido e l’Authentication Middleware determina l’identità dell’utente. A stabilire quale pagina vuole visualizzare è il Middleware di Endpoint Routing, se l’utente non è autorizzato a visualizzare la pagina è l’Authorization Middleware che fornisce direttamente la risposta all’utente.
Collegarsi al seguente indirizzo per vedere la pagina di login: https://localhost:5001/Identity/account/login
LINK AL CODICE SU GITHUB
Scaricare il codice della sezione17 oppure il ramo master o clonare il repository GITHUB per avere a disposizione tutte le sezioni nel tuo editor preferito. Consulta il file README.md per reperire user e password per inviare e-mail con mailtrap.io. Inoltre devi reperire i codici per implementare il ReCaptcha. Sotto ti riporto un’immagine dal sito di Google.
Scrivi un commento