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.
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:
- Konto Logto. Jeżeli nie masz konta, możesz założyć je za darmo.
- Środowisko deweloperskie .NET i projekt ASP.NET Core. Jeśli go nie masz, można zainstalować .NET i postępować zgodnie z instrukcjami dotyczącymi ASP.NET aby skonfigurować swój projekt.
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:
- Zaloguj się na konsolę Logto.
- W lewym pasku nawigacyjnym kliknij na Aplikacje.
- Kliknij na Utwórz aplikację.
- Na otwartej stronie znajdź sekcję "Tradycyjna aplikacja internetowa" i zlokalizuj kartę "ASP.NET Core".
- Kliknij na Rozpocznij budowanie i wprowadź nazwę swojej aplikacji.
- 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:
- URI przekierowania na stronie szczegółów aplikacji Logto to URI, do którego Logto przekieruje użytkownika po zalogowaniu.
- 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:
- URI przekierowania po wylogowaniu na stronie szczegółów aplikacji Logto to URI, do którego Logto przekieruje użytkownika po wylogowaniu.
- 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:
- Otwórz aplikację webową w swojej przeglądarce, powinieneś zobaczyć "Czy jest zalogowany: Fałsz" i przycisk "Zaloguj się".
- Kliknij przycisk "Zaloguj się", a następnie powinieneś zostać przekierowany na stronę logowania Logto.
- Po zalogowaniu powinieneś zostać przekierowany z powrotem do aplikacji webowej, a następnie powinieneś zobaczyć "Czy jest zalogowany: Prawda" i przycisk "Wyloguj się".
- 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!