Italiano
  • asp-net-core
  • c-sharp
  • tutorial
  • auth
  • autenticazione
  • oauth
  • oidc
  • identità

Costruisci l'autenticazione ASP.NET Core con Logto

Impara a costruire un flusso di autenticazione utente con ASP.NET Core integrando l'SDK Logto.

Gao
Gao
Founder

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:

Creare un'applicazione Logto

Per iniziare, crea un'applicazione Logto con il tipo "Web tradizionale". Segui questi passaggi per creare un'applicazione Logto:

  1. Accedi alla Console Logto.
  2. Nella barra di navigazione a sinistra, fai clic su Applicazioni.
  3. Fai clic su Crea applicazione.
  4. Nella pagina aperta, trova la sezione "App web tradizionale" e localizza la scheda "ASP.NET Core".
  5. Fai clic su Inizia a costruire, e inserisci il nome della tua applicazione.
  6. 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:

  1. 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.
  2. 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:

  1. 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.
  2. 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:

  1. Apri l'applicazione web nel tuo browser, dovresti vedere "Autenticato: False" e il pulsante "Accedi".
  2. Fai clic sul pulsante "Accedi", e dovresti essere reindirizzato alla pagina di accesso di Logto.
  3. Dopo che ti sei autenticato, dovresti essere reindirizzato all'applicazione web, e dovresti vedere "Autenticato: True" e il pulsante "Disconnetti".
  4. 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!

Letture ulteriori