Tworzenie SDK opartego na Node.js dla Logto w ciągu kilku minut
Dowiedz się, jak stworzyć niestandardowe SDK dla Logto, używając `@logto/node`.
Wcześniej, w tym artykule, stworzyliśmy webowe SDK dla Logto w ciągu kilku minut. Teraz skupimy się na Node.js, kolejnej popularnej platformie dla programistów JavaScript.
W tym przewodniku przeprowadzimy cię przez kroki tworzenia prostego SDK dla Logto w Express, używając @logto/node
. W SDK zaimplementujemy przepływ logowania, a ty możesz podążać tymi samymi krokami, aby stworzyć SDK dla każdej innej platformy opartej na Node.js, takiej jak Koa, Next.js, NestJS itp.
Przepływ logowania
Zanim zaczniemy, przyjrzyjmy się przepływowi logowania w Logto. Przepływ logowania składa się z następujących kroków:
- Przekierowanie do Logto: Użytkownik jest przekierowywany na stronę logowania Logto.
- Uwierzytelnienie: Użytkownik wprowadza swoje dane uwierzytelniające i loguje się w Logto.
- Przekierowanie z powrotem do twojej aplikacji: Po pomyślnym uwierzytelnieniu, użytkownik jest przekierowywany z powrotem do twojej aplikacji z kodem autoryzacyjnym.
- Wymiana kodu: Twoja aplikacja wymienia kod autoryzacyjny na tokeny i przechowuje je jako stan uwierzytelnienia.
Krótkie wprowadzenie do @logto/node
Podobnie jak @logto/browser
, pakiet @logto/node
udostępnia klasę LogtoClient
, która dostarcza podstawowych funkcji Logto, w tym metod dla przepływu logowania:
signIn()
: Generuje adres URL OIDC autoryzacji i przekierowuje do niego.handleSignInCallback()
: Sprawdza i analizuje URL zwrotny, wyodrębnia kod autoryzacji, a następnie wymienia go na tokeny, wywołując endpoint tokenów.getContext()
: Pobiera kontekst bieżącego zapytania na podstawie ciasteczka sesji, w tym stan uwierzytelnienia i informacje o użytkowniku.
Tworzenie SDK dla Express
W SDK dostarczymy dwa obsługujące trasy (/sign-in
i /sign-in-callback
) oraz middleware withLogto
:
/sign-in
: Obsługiwanie trasy, które uruchamia przepływ logowania z odpowiedzią przekierowującą do URL autoryzacji OIDC./sign-in-callback
: Obsługiwanie trasy, które przetwarza URL zwrotnego do wywołania, wymienia kod autoryzacyjny na tokeny, przechowuje je i kończy przepływ logowania.- Middleware
withLogto
: Middleware, które wywołujegetContext()
, aby pobrać kontekst bieżącego zapytania, w tym stan uwierzytelnienia i informacje o użytkowniku.
Aby użyć SDK, możesz po prostu dodać to middleware do swojej aplikacji Express, aby chronić trasy, oraz używać obsługi tras, aby uruchamiać przepływ logowania i przetwarzać zwrotną trasę.
Krok 1: Zainstaluj pakiet
Najpierw zainstaluj pakiet @logto/node
używając npm lub innego menedżera pakietów:
Krok 2: Przygotuj adapter pamięci
Adapter pamięci jest wymagany do zainicjowania instancji LogtoClient
.
Zakładając, że użytkownik SDK już skonfigurował sesję Express, możemy po prostu zaimplementować klasę Storage
poprzez utworzenie nowego pliku storage.ts
:
Krok 3: Zaimplementuj obsługę tras
Żądanie HTTP jest bezstanowe, więc musimy zainicjować instancję klienta dla każdego żądania. Przygotujmy funkcję pomocniczą do tworzenia instancji klienta:
W tej funkcji zaimplementowaliśmy adapter navigate
, razem z adapterem ExpressStorage
. Adapter navigate
jest używany do przekierowania użytkownika do URL logowania.
Następnie zaimplementujmy obsługę tras, zawiniętą w funkcję handleAuthRoutes
:
- Trasa
/auth/sign-in
uruchamia przepływ logowania przez wywołaniesignIn()
, stan logowania jest przechowywany w sesji i zostanie wykorzystany przez trasę/auth/sign-in-callback
. - Trasa
/auth/sign-in-callback
przetwarza URL zwrotny i wymienia kod autoryzacyjny na tokeny przez wywołaniehandleSignInCallback()
, tokeny są przechowywane w sesji przez adapterExpressStorage
. Po zakończeniu wymiany użytkownik zostaje przekierowany z powrotem na stronę główną.
Krok 4: Zaimplementuj middleware
Middleware withLogto
jest używane do zabezpieczenia tras. Wywołuje getContext()
, aby pobrać kontekst bieżącego żądania, w tym stan uwierzytelnienia i informacje o użytkowniku.
Funkcja getContext
używa adaptera pamięci, aby uzyskać tokeny z sesji.
Punkt kontrolny: użycie SDK
Teraz, kiedy stworzyłeś SDK dla Logto w Express, możesz użyć go w swojej aplikacji, dodając middleware do zabezpieczenia tras oraz używając obsługi tras do uruchamiania przepływu logowania i obsługi zwrotnej trasy.
Oto prosty przykład, jak użyć SDK w twojej aplikacji Express:
W tym przykładzie używamy middleware withLogto
, aby sprawdzić stan uwierzytelnienia, i przekierować użytkownika na stronę logowania, jeśli nie jest uwierzytelniony; w przeciwnym razie wyświetlamy powitanie.
Możesz sprawdzić oficjalny projekt przykładowy Express tutaj.
Podsumowanie
W tym przewodniku przeprowadziliśmy cię przez kroki tworzenia SDK dla Logto w Express, implementując podstawowy przepływ uwierzytelnienia. SDK dostarczone tutaj to podstawowy przykład. Możesz go rozszerzyć, dodając więcej metod i funkcjonalności dostosowanych do potrzeb twojej aplikacji.
Możesz podążać tymi samymi krokami, aby stworzyć SDK dla każdej innej platformy JavaScriptowej działającej w Node.js.
Zasoby: