Costruisci l'autenticazione ASP.NET Core con Logto
Impara a costruire un flusso di autenticazione utente con ASP.NET Core integrando l'SDK Logto.
Introduzione
- Logto è un'alternativa moderna ad Auth0 per la costruzione dell'infrastruttura di identità del cliente con minimo sforzo. Supporta vari metodi di accesso, compresi username, email, numero di telefono e accessi social popolari come Google e GitHub.
- ASP.NET Core è un framework open source, ad alte prestazioni e multi piattaforma per la costruzione di applicazioni moderne, basate su cloud e connesse a Internet.
In questo tutorial, ti mostreremo come costruire un flusso di autenticazione utente con ASP.NET Core integrando l'SDK Logto. Il tutorial utilizza C# come linguaggio di programmazione.
Prerequisiti
Prima di iniziare, assicurati di avere quanto segue:
- Un account Logto. Se non ne hai uno, puoi registrarti gratuitamente.
- Un ambiente di sviluppo .NET e un progetto ASP.NET Core. Se non ne hai uno, puoi installare .NET e seguire i tutorial di ASP.NET per impostare il tuo progetto.
Creare un'applicazione Logto
Per iniziare, crea un'applicazione Logto con il tipo "Web tradizionale". Segui questi passaggi per creare un'applicazione Logto:
- Accedi alla Console Logto.
- Nella barra di navigazione a sinistra, fai clic su Applicazioni.
- Fai clic su Crea applicazione.
- Nella pagina aperta, trova la sezione "App web tradizionale" e localizza la scheda "ASP.NET Core".
- Fai clic su Inizia a costruire, e inserisci il nome della tua applicazione.
- Fai clic su Crea.
Quindi dovresti vedere un tutorial interattivo che ti guida nel processo di integrazione dell'SDK Logto con la tua applicazione ASP.NET Core. Il contenuto seguente può essere un riferimento per un uso futuro.
Integrare con l'SDK Logto
Installazione
Nota che la versione minima supportata di ASP.NET Core è 6.0
.
Aggiungi il middleware di autenticazione Logto
Apri Startup.cs
(o Program.cs
) e aggiungi il seguente codice per registrare il middleware di autenticazione Logto:
Il metodo AddLogtoAuthentication
farà le seguenti cose:
- Imposterà lo schema di autenticazione predefinito su
LogtoDefaults.CookieScheme
. - Imposterà lo schema di sfida predefinito su
LogtoDefaults.AuthenticationScheme
. - Imposterà lo schema di disconnessione predefinito su
LogtoDefaults.AuthenticationScheme
. - Aggiungerà i gestori di autenticazione dei cookie e OpenID Connect allo schema di autenticazione.
Accesso
Aggiungi il seguente URI alla lista Redirect URIs
nella pagina dei dettagli dell'applicazione Logto:
Per accedere con Logto, puoi usare il metodo ChallengeAsync
:
Il metodo ChallengeAsync
reindirizzerà l'utente alla pagina di accesso di Logto.
La proprietà RedirectUri
viene utilizzata per reindirizzare l'utente alla tua applicazione web dopo l'autenticazione. Nota che è diverso dall'URI di reindirizzamento che hai configurato nella pagina dei dettagli dell'applicazione Logto:
- L'URI di reindirizzamento nella pagina dei dettagli dell'applicazione Logto è l'URI a cui Logto reindirizzerà l'utente dopo che l'utente ha effettuato l'accesso.
- La proprietà
RedirectUri
è l'URI che verrà reindirizzato dopo che sono state prese le azioni necessarie nel middleware di autenticazione Logto.
L'ordine delle azioni è 1 -> 2. Per chiarezza, chiamiamo l'URI di reindirizzamento nella pagina dei dettagli dell'applicazione Logto l'URI di reindirizzamento Logto e la proprietà RedirectUri
l'URI di reindirizzamento dell'applicazione.
L'URI di reindirizzamento Logto ha un valore predefinito di /Callback
, che puoi lasciare tale quale se non ci sono requisiti speciali. Se vuoi cambiarlo, puoi impostare la proprietà CallbackPath
per LogtoOptions
:
Ricorda di aggiornare il valore nella pagina dei dettagli dell'applicazione Logto di conseguenza.
Disconnessione
Aggiungi il seguente URI alla lista Post sign-out redirect URIs
nella pagina dei dettagli dell'applicazione Logto:
Per disconnettersi con Logto, puoi usare il metodo SignOutAsync
:
Il metodo SignOutAsync
cancellerà il cookie di autenticazione e reindirizzerà l'utente alla pagina di disconnessione di Logto.
La proprietà RedirectUri
viene utilizzata per reindirizzare l'utente alla tua applicazione web dopo la disconnessione. Nota che è diverso dall'URI di reindirizzamento post disconnessione che hai configurato nella pagina dei dettagli dell'applicazione Logto:
- L'URI di reindirizzamento post disconnessione nella pagina dei dettagli dell'applicazione Logto è l'URI a cui Logto reindirizzerà l'utente dopo che l'utente si è disconnesso.
- La proprietà
RedirectUri
è l'URI che verrà reindirizzato dopo che sono state prese le azioni necessarie nel middleware di autenticazione Logto.
L'ordine delle azioni è 1 -> 2. Per chiarezza, chiamiamo l'URI di reindirizzamento post disconnessione nella pagina dei dettagli dell'applicazione Logto l'URI di reindirizzamento post disconnessione Logto e la proprietà RedirectUri
l'URI di reindirizzamento post disconnessione dell'applicazione.
L'URI di reindirizzamento post disconnessione Logto ha un valore predefinito di /RitornoDopoDisconnessione
, che puoi lasciare tale quale se non ci sono requisiti speciali. Se vuoi cambiarlo, puoi impostare la proprietà SignedOutCallbackPath
per LogtoOptions
:
Ricorda di aggiornare il valore nella pagina dei dettagli dell'applicazione Logto di conseguenza.
Implementa i pulsanti di accesso/disconnessione (Pagine Razor)
Per prima cosa, aggiungi i metodi gestore al tuo PageModel
, ad esempio:
Poi, aggiungi i pulsanti alla tua pagina Razor (html):
<p>Autenticato: @User.Identity?.IsAuthenticated</p>
<form method="post">
@if (User.Identity?.IsAuthenticated == true)
{
<button type="submit" asp-page-handler="SignOut">Disconnetti</button>
} else {
<button type="submit" asp-page-handler="SignIn">Accedi</button>
}
</form>
Mostrerà il pulsante "Accedi" se l'utente non è autenticato, e mostrerà il pulsante "Disconnetti" se l'utente è autenticato.
Punto di controllo: Esegui l'applicazione web
Ora puoi eseguire l'applicazione web e provare ad accedere/disconnettersi con Logto:
- Apri l'applicazione web nel tuo browser, dovresti vedere "Autenticato: False" e il pulsante "Accedi".
- Fai clic sul pulsante "Accedi", e dovresti essere reindirizzato alla pagina di accesso di Logto.
- Dopo che ti sei autenticato, dovresti essere reindirizzato all'applicazione web, e dovresti vedere "Autenticato: True" e il pulsante "Disconnetti".
- Fai clic sul pulsante "Disconnetti", e dovresti essere reindirizzato alla pagina di disconnessione di Logto, e poi reindirizzato all'applicazione web.
Se incontri problemi durante l'integrazione, non esitare a contattarci via email a [email protected] o unisciti al nostro server Discord!