• nodejs
  • javascript
  • sdk
  • express

Skapa ett Node.js-baserat ramverk för SDK för Logto på några minuter

Lär dig hur du skapar ett anpassat SDK för Logto med `@logto/node`.

Sijie
Sijie
Developer

Tidigare i denna artikel, skapade vi ett webb-SDK för Logto på några minuter. Nu ska vi fokusera på Node.js, en annan populär plattform för JavaScript-utvecklare.

I denna guide kommer vi att gå igenom stegen för att skapa ett enkelt Express-SDK för Logto med @logto/node. Detta SDK kommer att implementera inloggningsflödet, och du kan följa samma steg för att skapa ett SDK för någon annan plattform baserad på Node.js, såsom Koa, Next.js, NestJS, etc.

Inloggningsflödet

Innan vi börjar, låt oss granska inloggningsflödet i Logto. Inloggningsflödet består av följande steg:

  1. Omdirigera till Logto: Användaren omdirigeras till Logtos inloggningssida.
  2. Autentisera: Användaren anger sina inloggningsuppgifter och autentiserar med Logto.
  3. Omdirigera tillbaka till din app: Efter lyckad autentisering omdirigeras användaren tillbaka till din app med en autentiseringskod.
  4. Kodutbyte: Din app utbyter autentiseringskoden mot tokens och lagrar tokens som autentiseringstillstånd.

Kort introduktion av @logto/node

Precis som @logto/browser exponerar @logto/node-paketet en LogtoClient-klass som tillhandahåller Logtos kärnfunktioner, inklusive metoder för inloggningsflöde:

  1. signIn(): Genererar OIDC-autentiserings-URL och omdirigerar till den.
  2. handleSignInCallback(): Kontrollerar och analyserar den återkallade URL:en och extraherar autentiseringskoden, sedan byter koden mot tokens genom att ringa tokens slutpunkt.
  3. getContext(): Hämtar kontexten för den aktuella förfrågan baserat på sessionens cookie, inklusive autentiseringstillstånd och användarinformation.

Skapa Express-SDK

I SDK kommer vi att tillhandahålla två routhanterare (/sign-in och /sign-in-callback) tillsammans med en withLogto-middleware:

  1. /sign-in: En routhanterare som triggar inloggningsflödet med ett svar som omdirigerar till OIDC-autentiserings-URL.
  2. /sign-in-callback: En routhanterare som behandlar återkallnings-URL:en, byter autentiseringskoden mot tokens, lagrar dem och slutför inloggningsflödet.
  3. withLogto middleware: En middleware som anropar getContext() för att hämta kontexten för den aktuella förfrågan, inklusive autentiseringstillstånd och användarinformation.

För att använda SDK kan du helt enkelt lägga till middleware till din Express-app för att skydda routes och använda routhanterare för att trigga inloggningsflödet och hantera återkallningen.

Steg 1: Installera paketet

Först, installera @logto/node-paketet med npm eller andra pakethanterare:

Steg 2: Förbered lagringsadaptern

En lagringsadapter krävs för att initiera LogtoClient-instansen.

Förutsatt att SDK-användaren redan har ställt in expresssessionen, kan vi helt enkelt implementera Storage-klassen genom att skapa en ny fil storage.ts:

Steg 3: Implementera routhanterarna

HTTP-förfrågan är tillståndslös, så vi behöver initiera klientinstansen för varje förfrågan. Låt oss förbereda en funktionshjälpare för att skapa klientinstansen:

I denna funktion implementerar vi navigate-adaptern tillsammans med ExpressStorage-adaptern. navigate-adaptern används för att omdirigera användaren till inloggnings-URL.

Därefter, låt oss implementera routhanterarna, inneslutna i en funktion handleAuthRoutes:

  1. /auth/sign-in-routhanteraren triggar inloggningsflödet genom att anropa signIn(), ett inloggningstillstånd lagras i sessionen och kommer att användas av /auth/sign-in-callback-routhanteraren.
  2. /auth/sign-in-callback-routhanteraren hanterar återkallnings-URL:en och byter autentiseringskoden mot tokens genom att anropa handleSignInCallback(), tokens lagras i sessionen av ExpressStorage-adaptern. När bytet är klart, omdirigeras användaren tillbaka till hemsidan.

Steg 4: Implementera middleware

withLogto-middleware används för att skydda routes. Den anropar getContext() för att få kontexten för den aktuella förfrågan, inklusive autentiseringstillstånd och användarinformation.

Funktionen getContext använder lagringsadaptern för att få tokens från sessionen.

Kontrollpunkt: använda SDK

Nu när du har skapat Express-SDK för Logto, kan du använda det i din app genom att lägga till middleware för att skydda routes och använda routhanterare för att trigga inloggningsflödet och hantera återkallningen.

Här är ett enkelt exempel på hur du använder SDK i din Express-app:

I detta exempel använder vi withLogto-middleware för att kontrollera autentiseringstillståndet och omdirigera användaren till inloggningssidan om de inte är autentiserade, annars visar vi ett välkomstmeddelande.

Du kan kolla det officiella Express-exempelprojektet här.

Slutsats

I denna guide har vi gått igenom stegen för att skapa ett Express-SDK för Logto som implementerar det grundläggande autentiseringsflödet. SDK som tillhandahålls här är ett grundläggande exempel. Du kan utöka det genom att lägga till fler metoder och funktionaliteter för att uppfylla din apps behov.

Du kan följa samma steg för att skapa ett SDK för någon annan JavaScript-baserad plattform som körs i Node.js.

Resurser:

  1. Logto Node SDK
  2. Logto Express SDK