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`.
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:
- Omdirigera till Logto: Användaren omdirigeras till Logtos inloggningssida.
- Autentisera: Användaren anger sina inloggningsuppgifter och autentiserar med Logto.
- Omdirigera tillbaka till din app: Efter lyckad autentisering omdirigeras användaren tillbaka till din app med en autentiseringskod.
- 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:
signIn()
: Genererar OIDC-autentiserings-URL och omdirigerar till den.handleSignInCallback()
: Kontrollerar och analyserar den återkallade URL:en och extraherar autentiseringskoden, sedan byter koden mot tokens genom att ringa tokens slutpunkt.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:
/sign-in
: En routhanterare som triggar inloggningsflödet med ett svar som omdirigerar till OIDC-autentiserings-URL./sign-in-callback
: En routhanterare som behandlar återkallnings-URL:en, byter autentiseringskoden mot tokens, lagrar dem och slutför inloggningsflödet.withLogto
middleware: En middleware som anropargetContext()
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
:
/auth/sign-in
-routhanteraren triggar inloggningsflödet genom att anropasignIn()
, ett inloggningstillstånd lagras i sessionen och kommer att användas av/auth/sign-in-callback
-routhanteraren./auth/sign-in-callback
-routhanteraren hanterar återkallnings-URL:en och byter autentiseringskoden mot tokens genom att anropahandleSignInCallback()
, tokens lagras i sessionen avExpressStorage
-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: