ASP.NET Identity (https://www.asp.net/identity) è il framework per la AAA, ed è OWIN compliant.
AAA è acronimo di Authentication, Authorization, Accounting.
OWIN è una specifica volta a disaccoppiare le applicazioni web dai web server che le ospitano.
Katana è (o era?) il framework che implementa OWIN nello stack di sviluppo per applicazioni di Microsoft.
Attualmente è alla versione 2.2.1 (la 1.0 risale ad ottobre 2013, la 2.0 a maggio 2014, la v3 è in alpha da ottobre 2015).
Microsoft ha fatto le cose per bene, mettendo da parte il pattern “FormsAuthentication + Membership API” e modellando (e rilasciando) un framework tutto nuovo.
Le caratteristiche più interessanti sono:
- il modello claim based
- autenticazione a due fattori (sms o mail)
- account lockout
- login token validation (security stamp)
- double opt-in
- la classe UserManager (che si occupa sia di Users che di Roles Management)
- la classe SignInManager (creazione dell’oggetto utente e del cookie di autenticazione)
Esplorando un pò il codice (che il template di default dei progetti Visual Studio 2017 mette a disposizione) ci si accorge presto che lo sviluppatore può personalizzare moltissimo il modello.
Le classi *Managers consentono una rapida interazione con il sistema, mentre le classi *Stores possono essere estese per personalizzare la persistenza dei dati (da Azure Table Storage ai db NoSql).
Nella pratica, ASP.NET Identity è un package (Microsoft.AspNet.Identity.Core), che ha tra le sue dipendenze:
- OWIN (Microsoft.AspNet.Identity.Owin)
- Entity Framework (Microsoft.AspNet.Identity.EntityFramework)
Il data storage di default è Sql Server (Local DB nella cartella AppData).
Il database viene creato con EntityFramework Code First :)
Take away valued links
ASP.NET Identity Provider for NHibernate
Overview of Custom Storage Providers for ASP.NET Identity