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`.
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.
Zanim zaczniemy, przyjrzyjmy się przepływowi logowania w Logto. Przepływ logowania składa się z następujących kroków:
@logto/nodePodobnie 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.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.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ę.
Najpierw zainstaluj pakiet @logto/node używając npm lub innego menedżera pakietów:
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:
Żą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:
/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./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ą.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.
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.
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: