• asp-net-core
  • c-sharp
  • tutorial
  • auth
  • authentication
  • oauth
  • oidc
  • identity

Budowanie uwierzytelniania z ASP.NET Core przy pomocy Logto

Dowiedz się, jak zbudować przepływ uwierzytelniania użytkowników z ASP.NET Core, integrując SDK Logto.

Gao
Gao
Founder

Wstęp

  • Logto to nowoczesna alternatywa dla Auth0 do budowania infrastruktury tożsamości klienta z minimalnym wysiłkiem. Obsługuje różne metody logowania, w tym nazwę użytkownika, e-mail, numer telefonu oraz popularne logowania społecznościowe, takie jak Google i GitHub.
  • ASP.NET Core to wieloplatformowy, wydajny, otwartoźródłowy framework do budowania nowoczesnych, opartych na chmurze, połączonych z Internetem aplikacji.

W tym przewodniku pokażemy, jak zbudować przepływ uwierzytelniania użytkowników z ASP.NET Core, integrując SDK Logto. Przewodnik korzysta z języka programowania C#.

Wymagania wstępne

Zanim zaczniesz, upewnij się, że masz następujące elementy:

Utwórz aplikację Logto

Aby rozpocząć, utwórz aplikację Logto o typie "Tradycyjna strona internetowa". Postępuj zgodnie z poniższymi krokami, aby utworzyć aplikację Logto:

  1. Zaloguj się na konsolę Logto.
  2. W lewym pasku nawigacyjnym kliknij na Aplikacje.
  3. Kliknij na Utwórz aplikację.
  4. Na otwartej stronie znajdź sekcję "Tradycyjna aplikacja internetowa" i zlokalizuj kartę "ASP.NET Core".
  5. Kliknij na Rozpocznij budowanie i wprowadź nazwę swojej aplikacji.
  6. Kliknij na Utwórz.

Następnie powinieneś zobaczyć interaktywny przewodnik, który prowadzi Cię przez proces integracji SDK Logto z Twoją aplikacją ASP.NET Core. Poniższa treść może być punktem odniesienia na przyszłość.

Integracja z SDK Logto

Instalacja

Zauważ, że minimalna obsługiwana wersja ASP.NET Core to 6.0.

Dodaj middleware uwierzytelniania Logto

Otwórz Startup.cs (lub Program.cs) i dodaj następujący kod w celu zarejestrowania middleware uwierzytelniania Logto:

Metoda AddLogtoAuthentication będzie wykonywać następujące zadania:

  • Ustawia domyślny schemat uwierzytelniania na LogtoDefaults.CookieScheme.
  • Ustawia domyślny schemat wyzwania na LogtoDefaults.AuthenticationScheme.
  • Ustawia domyślny schemat wylogowania na LogtoDefaults.AuthenticationScheme.
  • Dodaje obiekt cookie i obsługę uwierzytelniania OpenID Connect do schematu uwierzytelniania.

Logowanie

Dodaj następujący URI do listy Redirect URIs na stronie szczegółów aplikacji Logto:

Aby zalogować się za pomocą Logto, możesz skorzystać z metody ChallengeAsync:

Metoda ChallengeAsync przekieruje użytkownika na stronę logowania Logto.

Właściwość RedirectUri służy do przekierowania użytkownika z powrotem do Twojej aplikacji webowej po uwierzytelnieniu. Zauważ, że jest to inne niż URI przekierowania, które skonfigurowałeś na stronie szczegółów aplikacji Logto:

  1. URI przekierowania na stronie szczegółów aplikacji Logto to URI, do którego Logto przekieruje użytkownika po zalogowaniu.
  2. Właściwość RedirectUri to URI, do którego zostanie przekierowany przepływ po wykonaniu niezbędnych czynności w middleware uwierzytelniania Logto.

Kolejność działań to 1 -> 2. Dla jasności, URI przekierowania na stronie szczegółów aplikacji Logto nazwiemy URI przekierowania Logto a właściwość RedirectUri nazwiemy URI przekierowania aplikacji.

URI przekierowania Logto ma wartość domyślną /Callback, którą można zostawić taką, jaka jest, jeśli nie ma specyficznych wymagań. Jeżeli chcesz ją zmienić, możesz ustawić właściwość CallbackPath dla LogtoOptions:

Pamiętaj, aby zaktualizować wartość na stronie szczegółów aplikacji Logto odpowiednio.

Wylogowanie

Dodaj następujące URI do listy Post sign-out redirect URIs na stronie szczegółów aplikacji Logto:

Aby wylogować się za pomocą Logto, możesz skorzystać z metody SignOutAsync:

Metoda SignOutAsync wyczyści ciasteczko uwierzytelniania i przekieruje użytkownika na stronę wylogowania Logto.

Właściwość RedirectUri służy do przekierowania użytkownika z powrotem do Twojej aplikacji webowej po wylogowaniu. Zauważ, że różni się to od URI przekierowania po wylogowaniu, które skonfigurowałeś na stronie szczegółów aplikacji Logto:

  1. URI przekierowania po wylogowaniu na stronie szczegółów aplikacji Logto to URI, do którego Logto przekieruje użytkownika po wylogowaniu.
  2. Właściwość RedirectUri to URI, do którego zostanie przekierowany przepływ po wykonaniu niezbędnych działań w middleware uwierzytelniania Logto.

Kolejność działań to 1 -> 2. Dla jasności, URI przekierowania po wylogowaniu na stronie szczegółów aplikacji Logto nazwiemy URI przekierowania po wylogowaniu Logto a właściwość RedirectUri nazwiemy URI przekierowania po wylogowaniu aplikacji.

URI przekierowania po wylogowaniu Logto ma wartość domyślną /SignedOutCallback, którą można zostawić taką, jaka jest, jeśli nie ma specyficznych wymagań. Jeżeli chcesz ją zmienić, możesz ustawić właściwość SignedOutCallbackPath dla LogtoOptions:

Pamiętaj, aby zaktualizować wartość na stronie szczegółów aplikacji Logto odpowiednio.

Implementuj przyciski logowania/wylogowania (Razor Pages)

Po pierwsze, dodaj metody obsługujące do PageModel, na przykład:

Następnie dodaj przyciski do swojej strony Razor (html):

<p>Czy jest zalogowany: @User.Identity?.IsAuthenticated</p>
<form method="post">
  @if (User.Identity?.IsAuthenticated == true)
  {
    <button type="submit" asp-page-handler="SignOut">Wyloguj się</button>
  } else {
    <button type="submit" asp-page-handler="SignIn">Zaloguj się</button>
  }
</form>

Pokaże przycisk "Zaloguj się", jeśli użytkownik nie jest zalogowany, oraz przycisk "Wyloguj się", jeśli użytkownik jest zalogowany.

Punkt kontrolny: Uruchom aplikację webową

Teraz możesz uruchomić aplikację webową i spróbować zalogować się/wylogować z Logto:

  1. Otwórz aplikację webową w swojej przeglądarce, powinieneś zobaczyć "Czy jest zalogowany: Fałsz" i przycisk "Zaloguj się".
  2. Kliknij przycisk "Zaloguj się", a następnie powinieneś zostać przekierowany na stronę logowania Logto.
  3. Po zalogowaniu powinieneś zostać przekierowany z powrotem do aplikacji webowej, a następnie powinieneś zobaczyć "Czy jest zalogowany: Prawda" i przycisk "Wyloguj się".
  4. Kliknij przycisk "Wyloguj się", a następnie powinieneś zostać przekierowany na stronę wylogowania Logto, a następnie z powrotem do aplikacji webowej.

Jeśli napotkasz jakiekolwiek problemy podczas integracji, nie wahaj się skontaktować z nami poprzez e-mail na adres [email protected] lub dołącz do naszego serwera Discord!

Dalsze lektury