Una funzionalità davvero interessante di ASP.NET Identity è la possibilità di invalidare i cookie di autenticazione rilasciati per un utente aggiornandone il security stamp. Per esempio, a valle di un cambio password, possiamo forzare il logout per quell'utente da tutti i client con cui si è collegato in precedenza: se pensiamo al caso di una password compromessa, ci rendiamo subito conto di quanto sia importante e utile questa funzione.
L'utilizzo è davvero semplice. Intanto dobbiamo sincerarci di utilizzare il SecurityStampValidator per validare il cookie di autenticazione. Si tratta della scelta di default, per cui con ogni probabilità su Startup.Auth.cs troveremo già il codice seguente:
public void ConfigureAuth(IAppBuilder app) { // ... app.UseCookieAuthentication(new CookieAuthenticationOptions { // ... Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator .OnValidateIdentity<ApplicationUserManager, ApplicationUser>( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) } }); // ... }
Il SecurityStampValidator associa la validità del cookie di autenticazione a un timestamp che, come possiamo notare, viene validato per default ogni 30 minuti.
A questo punto, per effettuare il sign out da remoto di tutti i client connessi, per esempio a valle del reset password, dobbiamo semplicemente forzare la rigenerazione di un nuovo security stamp:
await UserManager.UpdateSecurityStampAsync(user.Id);
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Cache policy su route groups di Minimal API in ASP.NET Core 7
Chiamare un endpoint ASP.NET Core protetto da Certificate Authentication
Abilitare automaticamente Dependabot in tutti i repository di una organizzazione su GitHub
Impostare il forward degli header in un sito ASP.NET Core dietro a un reverse proxy
Usare il versioning con i controller di ASP.NET Core Web API
Scoprire le ottimizzazioni di Entity Framework Core in fase di scrittura di un solo record
Sfruttare la local cache del browser tramite gli ETag in ASP.NET Core
Organizzare il codice JavaScript utilizzando i moduli
Impostare un default custom per i metodi LINQ che tornano il valore di default
Impostare il tema light o dark utilizzando i CSS
Utilizzare flat e flatMap per appiattire array innestati in array
Leggere i dati di configurazione di ASP.NET Core da Azure Key Vault