• nodejs
  • javascript
  • sdk
  • express

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`.

Sijie
Sijie
Developer

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:

  1. Przekierowanie do Logto: Użytkownik jest przekierowywany na stronę logowania Logto.
  2. Uwierzytelnienie: Użytkownik wprowadza swoje dane uwierzytelniające i loguje się w Logto.
  3. Przekierowanie z powrotem do twojej aplikacji: Po pomyślnym uwierzytelnieniu, użytkownik jest przekierowywany z powrotem do twojej aplikacji z kodem autoryzacyjnym.
  4. 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:

  1. signIn(): Generuje adres URL OIDC autoryzacji i przekierowuje do niego.
  2. handleSignInCallback(): Sprawdza i analizuje URL zwrotny, wyodrębnia kod autoryzacji, a następnie wymienia go na tokeny, wywołując endpoint tokenów.
  3. 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:

  1. /sign-in: Obsługiwanie trasy, które uruchamia przepływ logowania z odpowiedzią przekierowującą do URL autoryzacji OIDC.
  2. /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.
  3. Middleware withLogto: Middleware, które wywołuje getContext(), 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:

  1. Trasa /auth/sign-in uruchamia przepływ logowania przez wywołanie signIn(), stan logowania jest przechowywany w sesji i zostanie wykorzystany przez trasę /auth/sign-in-callback.
  2. Trasa /auth/sign-in-callback przetwarza URL zwrotny i wymienia kod autoryzacyjny na tokeny przez wywołanie handleSignInCallback(), tokeny są przechowywane w sesji przez adapter ExpressStorage. 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:

  1. Logto Node SDK
  2. Logto Express SDK