• asp-net-core
  • c-sharp
  • handledning
  • auth
  • autentisering
  • oauth
  • oidc
  • identitet

Bygg ASP.NET Core-autentisering med Logto

Lär dig hur man bygger ett användarautentiseringsflöde med ASP.NET Core genom att integrera Logto SDK.

Gao
Gao
Founder

Introduktion

  • Logto är ett modernt alternativ till Auth0 för att bygga kundidentitetsinfrastruktur med minimal ansträngning. Det stöder olika inloggningsmetoder, inklusive användarnamn, e-post, telefonnummer och populära sociala inloggningar som Google och GitHub.
  • ASP.NET Core är ett plattformsoberoende, högpresterande och öppen källkod-ramverk för att bygga moderna, molnbaserade, internetanslutna applikationer.

I denna handledning kommer vi att visa hur du bygger ett användarautentiseringsflöde med ASP.NET Core genom att integrera Logto SDK. Handledningen använder C# som programmeringsspråk.

Förutsättningar

Innan du börjar, se till att du har följande:

Skapa en Logto-applikation

För att komma igång, skapa en Logto-applikation med typen "Traditionell web". Följ dessa steg för att skapa en Logto-applikation:

  1. Logga in på Logto Console.
  2. I den vänstra navigeringslisten, klicka på Applikationer.
  3. Klicka på Skapa applikation.
  4. På den öppnade sidan, hitta sektionen "Traditionell webbapplikation" och leta upp "ASP.NET Core"-kortet.
  5. Klicka på Börja bygga och ange namnet på din applikation.
  6. Klicka på Skapa.

Sedan bör du se en interaktiv handledning som vägleder dig genom processen att integrera Logto SDK med din ASP.NET Core-applikation. Följande innehåll kan användas som en referens för framtida bruk.

Integrera med Logto SDK

Installation

Observera att den minsta stödda versionen av ASP.NET Core är 6.0.

Lägg till Logto-autentiseringsmiddleware

Öppna Startup.cs (eller Program.cs) och lägg till följande kod för att registrera Logto-autentiseringsmiddleware:

Metoden AddLogtoAuthentication kommer att utföra följande saker:

  • Ställ in standardschemat för autentisering till LogtoDefaults.CookieScheme.
  • Ställ in standardutmaningsschemat till LogtoDefaults.AuthenticationScheme.
  • Ställ in standard utloggningsschemat till LogtoDefaults.AuthenticationScheme.
  • Lägg till cookie och OpenID Connect-autentiseringshanterare till autentiseringsschemat.

Logga in

Lägg till följande URI i listan över Omdirigerings-URI:er på Logto-applikationens detaljsida:

För att logga in med Logto, kan du använda metoden ChallengeAsync:

Metoden ChallengeAsync kommer att omdirigera användaren till Logtos inloggningssida.

Egenskapen RedirectUri används för att omdirigera användaren tillbaka till din webbapplikation efter autentisering. Observera att den är annorlunda än den omdirigerings-URI du konfigurerade på Logto-applikationens detaljsida:

  1. Omdirigerings-URI:n på Logto-applikationens detaljsida är den URI som Logto kommer att omdirigera användaren tillbaka till efter att användaren har loggat in.
  2. Egenskapen RedirectUri är den URI som kommer att omdirigeras till efter nödvändiga åtgärder har vidtagits i Logto-autentiseringsmiddleware.

Ordningen av åtgärderna är 1 -> 2. För tydlighetens skull, låt oss kalla omdirigerings-URI:n på Logto-applikationens detaljsida för Logto omdirigerings-URI och egenskapen RedirectUri för applikationsomdirigerings-URI.

Logto omdirigerings-URI har ett standardvärde på /Callback, som du kan lämna som den är om det inte finns något särskilt krav. Om du vill ändra det, kan du ställa in CallbackPath-egenskapen för LogtoOptions:

Kom ihåg att uppdatera värdet på Logto-applikationens detaljsida därefter.

Logga ut

Lägg till följande URI i listan över Omdirigerings-URI:er efter utloggning på Logto-applikationens detaljsida:

För att logga ut med Logto, kan du använda metoden SignOutAsync:

Metoden SignOutAsync kommer att rensa autentiseringscookien och omdirigera användaren till Logtos utloggningssida.

Egenskapen RedirectUri används för att omdirigera användaren tillbaka till din webbapplikation efter utloggning. Observera att den är annorlunda än omdirigerings-URI:n efter utloggning som du konfigurerade på Logto-applikationens detaljsida:

  1. Omdirigerings-URI:n efter utloggning på Logto-applikationens detaljsida är den URI som Logto kommer att omdirigera användaren tillbaka till efter att användaren har loggat ut.
  2. Egenskapen RedirectUri är den URI som kommer att omdirigeras till efter nödvändiga åtgärder har vidtagits i Logto-autentiseringsmiddleware.

Ordningen av åtgärderna är 1 -> 2. För tydlighetens skull, låt oss kalla omdirigerings-URI:n efter utloggning på Logto-applikationens detaljsida för Logto omdirigerings-URI efter utloggning och egenskapen RedirectUri för applikationsomdirigerings-URI efter utloggning.

Logto omdirigerings-URI efter utloggning har ett standardvärde på /SignedOutCallback, som du kan lämna som den är om det inte finns något särskilt krav. Om du vill ändra det, kan du ställa in SignedOutCallbackPath-egenskapen för LogtoOptions:

Kom ihåg att uppdatera värdet på Logto-applikationens detaljsida därefter.

Implementera inloggnings-/utloggningsknappar (Razor Pages)

Först, lägg till hanteringsmetoderna till din PageModel, till exempel:

Sedan, lägg till knapparna på din Razor-sida (html):

<p>Is authenticated: @User.Identity?.IsAuthenticated</p>
<form method="post">
  @if (User.Identity?.IsAuthenticated == true)
  {
    <button type="submit" asp-page-handler="SignOut">Sign out</button>
  } else {
    <button type="submit" asp-page-handler="SignIn">Sign in</button>
  }
</form>

Det kommer visa "Sign in"-knappen om användaren inte är autentiserad, och visa "Sign out"-knappen om användaren är autentiserad.

Kontrollpunkt: Kör webbapplikationen

Nu kan du köra webbapplikationen och försöka logga in/logga ut med Logto:

  1. Öppna webbapplikationen i din webbläsare, du bör se "Is authenticated: False" och "Sign in"-knappen.
  2. Klicka på "Sign in"-knappen, och du bör bli omdirigerad till Logtos inloggningssida.
  3. Efter att du har loggat in bör du bli omdirigerad tillbaka till webbapplikationen, och du bör se "Is authenticated: True" och "Sign out"-knappen.
  4. Klicka på "Sign out"-knappen, och du bör bli omdirigerad till Logtos utloggningssida, och sedan omdirigerad tillbaka till webbapplikationen.

Om du stöter på några problem under integrationen, tveka inte att kontakta oss via e-post på [email protected] eller gå med i vår Discord-server!

Vidare läsning