Informazioni su ASP.NET Core Identity
In questa unità verranno fornite informazioni sull'architettura di Identity.
Architettura di ASP.NET Core Identity
ASP.NET Core Identity è un sistema di gestione dell'appartenenza che consente di aggiungere funzionalità di registrazione e accesso degli utenti a un'interfaccia utente Web ASP.NET Core. Il sistema di gestione dell'appartenenza gestisce sia l'autenticazione che l'autorizzazione. L'autenticazione riguarda chi è l'utente. L'autorizzazione riguarda le operazioni che si è autorizzati a eseguire. L'autenticazione è quindi un prerequisito per l'autorizzazione.
In alternativa alla creazione di account locali, Identity supporta provider di accesso esterni come Facebook e X. Le sessioni utente vengono mantenute usando l'autenticazione basata su cookie. Per impostazione predefinita, al momento dell'accesso viene creato un cookie, che viene eliminato definitivamente alla disconnessione.
I dati di appartenenza vengono salvati in modo permanente usando un archivio dati e una tecnologia di accesso ai dati di propria scelta. La tecnologia di accesso ai dati predefinita è un mapper O/RM (Object-Relational Mapper) denominato Entity Framework (EF) Core. L'archivio dati predefinito è SQL Server.
EF Core astrae le complessità dell'interazione con il database sottostante. Pertanto, EF Core in genere consente di usare uno qualsiasi dei suoi provider di database con Identity. Sono disponibili provider di database per SQL Server, SQLite e molti altri archivi dati. Identity offre inoltre la flessibilità necessaria per usare una tecnologia di accesso ai dati di propria scelta. Dapper è un'alternativa molto diffusa.
Il diagramma seguente illustra l'architettura di Identity usata in questo modulo:
Nel diagramma precedente:
- L'app ASP.NET Core Razor Pages rappresenta l'interfaccia utente Web a cui verrà aggiunto il supporto di Identity in questo modulo.
- Il livello Identity Manager contiene le classi usate dallo spazio dei nomi
Microsoft.AspNetCore.Identity
. Esempi di tali classi usate in modo esplicito in questo modulo sonoSignInManager<TUser>
eUserManager<TUser>
. - Il livello EF Core Identity Store contiene classi dello spazio dei nomi
Microsoft.AspNetCore.Identity.EntityFrameworkCore
. Un esempio di una tale classe usata in modo implicito in questo modulo èUserStore<TUser>
. - Database Provider è una libreria specifica del database che accetta codice SQL dal provider EF Core (non illustrato) e lo esegue.
EF Core usa una funzionalità denominata migrazione per aggiornare in modo incrementale lo schema del database per mantenerlo sincronizzato con il modello di dati dell'app. Le tabelle di database di supporto vengono create dopo l'applicazione della migrazione iniziale di EF Core. Il diagramma seguente illustra gli schemi delle tabelle di supporto:
Nota
L'immagine precedente mostra le chiavi e le relazioni nel database. La chiave è la parte uno e l'infinito (8 rovesciato) è la parte molti. Un database può avere relazioni di tipo uno-a-uno, uno-a-molti e molti-a-molti. Le chiavi sono univoche. Il diagramma mostra come vengono creati questi join e le relazioni.
Riepilogo
In questa unità sono stati appresi i concetti relativi all'architettura di ASP.NET Core Identity. Nell'unità successiva si aggiungerà l'implementazione predefinita di ASP.NET Core Identity a un'app esistente.