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`.
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:
- Doorverwijzen naar Logto: De gebruiker wordt doorverwezen naar de aanmeldpagina van Logto.
- Authenticeren: De gebruiker voert zijn inloggegevens in en authenticeert zich bij Logto.
- Terugverwijzen naar je app: Na succesvolle authenticatie wordt de gebruiker teruggeleid naar je app met een auth-code.
- 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:
signIn()
: Genereert de OIDC-auth-url en verwijst ernaar door.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.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:
/sign-in
: Een routehandler die de aanmeldstroom activeert met een reactie die doorverwijst naar de OIDC-auth-url./sign-in-callback
: Een routehandler die de callback-url verwerkt, de auth-code inwisselt voor tokens, deze opslaat en de aanmeldstroom voltooit.withLogto
middleware: Een middleware diegetContext()
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
:
- De
/auth/sign-in
routehandler activeert de aanmeldstroom doorsignIn()
aan te roepen, een aanmeldstatus wordt opgeslagen in de sessie en wordt gebruikt door de/auth/sign-in-callback
routehandler. - De
/auth/sign-in-callback
routehandler verwerkt de callback-url en wisselt de auth-code in voor tokens doorhandleSignInCallback()
aan te roepen, de tokens worden opgeslagen in de sessie door deExpressStorage
-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: