Nederlands
  • nodejs
  • javascript
  • sdk
  • express

Een op Node.js gebaseerd framework SDK maken voor Logto in minuten

Leer hoe je een aangepaste SDK voor Logto maakt met behulp van `@logto/node`.

Sijie
Sijie
Developer

Eerder in dit artikel hebben we in een paar minuten een web SDK voor Logto gemaakt. Laten we nu focussen op Node.js, een ander populair platform voor JavaScript-ontwikkelaars.

In deze gids leiden we je stap voor stap door het proces om een eenvoudige Express SDK voor Logto te maken met behulp van @logto/node. Deze SDK implementeert de aanmeldstroom, en je kunt dezelfde stappen volgen om een SDK te maken voor elk ander platform gebaseerd op Node.js, zoals Koa, Next.js, NestJS, etc.

De aanmeldstroom

Voordat we beginnen, laten we de aanmeldstroom in Logto doornemen. De aanmeldstroom omvat de volgende stappen:

  1. Doorverwijzen naar Logto: De gebruiker wordt doorverwezen naar de aanmeldpagina van Logto.
  2. Authenticeren: De gebruiker voert zijn inloggegevens in en authenticeert zich bij Logto.
  3. Terugverwijzen naar je app: Na succesvolle authenticatie wordt de gebruiker teruggeleid naar je app met een auth-code.
  4. Code-uitwisseling: Je app wisselt de auth-code uit voor tokens en slaat de tokens op als de authenticatiestatus.

Korte introductie van @logto/node

Net als @logto/browser stelt het @logto/node-pakket een LogtoClient-klasse bloot die de kernfunctionaliteiten van Logto biedt, inclusief methoden voor de aanmeldstroom:

  1. signIn(): Genereert de OIDC-auth-url en verwijst ernaar door.
  2. handleSignInCallback(): Controleert en analyseert de callback-url en haalt de auth-code op, vervolgens wisselt de code in voor tokens door de token-endpoint aan te roepen.
  3. getContext(): Haal de context op van het huidige verzoek op basis van de sessiecookie, inclusief de authenticatiestatus en gebruikersinformatie.

Het maken van de Express SDK

In de SDK bieden we twee routehandlers (/sign-in en /sign-in-callback) samen met een withLogto-middleware:

  1. /sign-in: Een routehandler die de aanmeldstroom activeert met een reactie die doorverwijst naar de OIDC-auth-url.
  2. /sign-in-callback: Een routehandler die de callback-url verwerkt, de auth-code inwisselt voor tokens, deze opslaat en de aanmeldstroom voltooit.
  3. withLogto middleware: Een middleware die getContext() aanroept om de context van het huidige verzoek op te halen, inclusief de authenticatiestatus en gebruikersinformatie.

Om de SDK te gebruiken, kun je eenvoudig de middleware toevoegen aan je Express-app om routes te beschermen en de routehandlers gebruiken om de aanmeldstroom te activeren en de callback te verwerken.

Stap 1: Installeer het pakket

Installeer eerst het @logto/node-pakket met npm of andere pakketbeheerders:

Stap 2: Bereid de opslagadapter voor

Een opslagadapter is vereist om de LogtoClient-instantie te initialiseren.

Ervan uitgaande dat de SDK-gebruiker de express-sessie al heeft ingesteld, kunnen we de Storage-klasse eenvoudig implementeren door een nieuw bestand storage.ts te maken:

Stap 3: Implementeer de routehandlers

Het HTTP-verzoek is stateless, dus we moeten de clientinstantie voor elk verzoek initialiseren. Laten we een helpenfunctie voorbereiden om de clientinstantie te maken:

In deze functie implementeren we de navigate-adapter samen met de ExpressStorage-adapter. De navigate-adapter wordt gebruikt om de gebruiker door te verwijzen naar de aanmeld-url.

Laten we vervolgens de routehandlers implementeren, verpakt in een functie handleAuthRoutes:

  1. De /auth/sign-in routehandler activeert de aanmeldstroom door signIn() aan te roepen, een aanmeldstatus wordt opgeslagen in de sessie en wordt gebruikt door de /auth/sign-in-callback routehandler.
  2. De /auth/sign-in-callback routehandler verwerkt de callback-url en wisselt de auth-code in voor tokens door handleSignInCallback() aan te roepen, de tokens worden opgeslagen in de sessie door de ExpressStorage-adapter. Nadat de uitwisseling is voltooid, wordt de gebruiker teruggeleid naar de startpagina.

Stap 4: Implementeer de middleware

De withLogto middleware wordt gebruikt om routes te beschermen. Het roept getContext() aan om de context van het huidige verzoek op te halen, inclusief de authenticatiestatus en gebruikersinformatie.

De functie getContext gebruikt de opslagadapter om de tokens uit de sessie op te halen.

Controlepunt: de SDK gebruiken

Nu je de Express SDK voor Logto hebt gemaakt, kun je deze in je app gebruiken door de middleware toe te voegen om routes te beschermen en de routehandlers te gebruiken om de aanmeldstroom te activeren en de callback te verwerken.

Hier is een eenvoudig voorbeeld van hoe je de SDK in je Express-app gebruikt:

In dit voorbeeld gebruiken we de withLogto middleware om de authenticatiestatus te controleren en de gebruiker door te verwijzen naar de aanmeldpagina als ze niet zijn geauthenticeerd, anders tonen we een welkomstbericht.

Je kunt het officiële Express-voorbeeldproject hier bekijken.

Conclusie

In deze gids hebben we je door de stappen geleid om een Express SDK voor Logto te maken die de basis authenticatiestroom implementeert. De hier geboden SDK is een eenvoudig voorbeeld. Je kunt deze uitbreiden door meer methoden en functionaliteiten toe te voegen om aan de behoeften van je app te voldoen.

Je kunt dezelfde stappen volgen om een SDK te maken voor elk ander JavaScript-gebaseerd platform dat in Node.js draait.

Resources:

  1. Logto Node SDK
  2. Logto Express SDK