Integrazione di Passport.js con Logto
Una guida pratica ed esempio per integrare Passport.js con Logto.
Passport.js è un middleware di autenticazione per Node.js che può essere inserito non invasivamente in qualsiasi applicazione web basata su Express. Questa guida completa si concentrerà sull'utilizzo del plugin passport-openidconnect
, offrendo un modo semplice ma efficace per incorporare Logto con Passport.js. Durante questo tutorial, useremo Express.js per costruire la nostra applicazione. Tutto il codice di cui discuteremo è disponibile in un repository pubblico su GitHub.
Configurare express con sessione
Prima di addentrarci nel processo di integrazione, dovremo impostare il progetto di base installando Express.js e il suo middleware di sessione.
Assumendo che tu abbia un ambiente di progetto TypeScript preparato (se no, fai riferimento alla documentazione ufficiale di TypeScript), inizia installando i pacchetti necessari:
Preparare il file principale
Crea src/app.ts
con il seguente codice:
Questo script inizializza l'app Express e configura cookieParser
e il middleware di session
per la gestione delle sessioni basate su cookie, cruciale per memorizzare i risultati di autenticazione in Passport.js. Successivamente utilizza il modulo http
per avviare il servizio.
Creare un'applicazione Logto
Per procedere, è necessaria un'applicazione Logto. Creane una visitando la Console di Logto, navigando su “Applications”, e cliccando su “Create application”. Seleziona “Express”, dai un nome alla tua applicazione e clicca su “Create application”.
Dopo aver completato o terminato la lettura della guida alla creazione, troverai una pagina dettagliata con le informazioni di configurazione per i passaggi successivi.
Configurazione degli URI
Nella pagina dei dettagli dell'applicazione, configura due valori:
- Redirect URIs: Imposta questo valore su
http://localhost:3000/callback
per allinearlo al percorso callback del progetto. - Post Sign-out Redirect URIs: Usa
http://localhost:3000
per semplicità, indirizzando gli utenti alla homepage dopo la disconnessione.
Puoi modificare questi valori successivamente.
Configura Passport.js con le impostazioni dell'applicazione
Installare le dipendenze
Installa passport
e il plugin della strategia OIDC, passport-openidconnect
:
Preparare il file di configurazione
Crea app/config.ts
per la gestione della configurazione:
Configura le variabili di ambiente di conseguenza:
Variabile di Ambiente | Descrizione | Esempio |
---|---|---|
APP_ID | App ID da Logto | 4ukboxxxxxxxxx |
APP_SECRET | App Secret da Logto | 5aqccxxxxxxx |
ENDPOINT | Endpoint di Logto | https://g5xxx.logto.app/ |
Inizializzare Passport.js con la strategia OIDC
Crea src/passport.ts
Questo codice inizializza Passport con la OpenIDConnectStrategy
. I metodi di serializzazione e deserializzazione sono impostati a scopo dimostrativo.
Assicurati di inizializzare e collegare il middleware di Passport nella tua applicazione:
Creazione delle rotte di autenticazione
Ora creeremo rotte specifiche per i processi di autenticazione:
Accesso: /sign-in
Questa rotta costruisce e reindirizza a una rotta di autenticazione OIDC.
Gestire il callback di accesso: /callback
Questo gestisce il callback di accesso OIDC, memorizza i token e reindirizza alla homepage.
Disconnessione: /sign-out
Questo reindirizza all'URL di fine sessione di Logto, quindi di nuovo alla homepage.
Recupero dello stato di autenticazione e protezione delle rotte
Sviluppa la homepage con lo stato di autenticazione:
Qui, le informazioni utente vengono visualizzate utilizzando JSON.stringify
, e l'esistenza di request.user
viene utilizzata per proteggere le rotte.
Conclusioni
Congratulazioni per aver integrato Passport.js con Logto. Speriamo che questa guida possa aiutarti a migrare dai sistemi esistenti a Logto. Per un'esperienza di autenticazione migliorata, considera di provare Logto Cloud oggi stesso. Buona programmazione!