繁體中文(香港)
  • passportjs
  • oidc
  • express

整合 Passport.js 與 Logto

一個實用指南和範例,教你如何將 Passport.js 整合至 Logto。

Sijie
Sijie
Developer

Stop wasting weeks on user auth
Launch secure apps faster with Logto. Integrate user auth in minutes, and focus on your core product.
Get started
Product screenshot

Passport.js 是一個用於 Node.js 的身份驗證中介軟件,可以無縫嵌入任何基於 Express 的網絡應用。這份全面指南將側重於使用 passport-openidconnect 插件,提供一個簡單而有效的方法來將 Logto 與 Passport.js 結合。在本教程中,我們會使用 Express.js 來構建我們的應用。所有我們將討論的代碼都可在公共 GitHub 儲存庫中找到。

設置 express 與 session

在深入整合過程之前,我們需要在安裝 Express.js 及其 session 中介軟件後設置基本項目。

假設你已經準備好一個 TypeScript 項目環境(如果沒有,請參考 官方 TypeScript 文件),開始安裝必要的包:

準備主文件

創建 src/app.ts,包含以下代碼:

這段腳本初始化了 Express 應用並配置 cookieParsersession 中介軟件以進行基於 Cookie 的會話管理,這對於在 Passport.js 中存儲身份驗證結果至關重要。接著使用 http 模塊啟動服務。

創建 Logto 應用

要繼續,需要一個 Logto 應用。通過訪問 Logto 控制台,導航至「應用程式」,然後點擊「創建應用程式」來創建一個。選擇「Express」,為你的應用命名,然後點擊「創建應用程式」。

Create application

完成或閱讀完創建指南後,你將找到一個詳情頁面,其中包含下一步的配置資訊。

Application detail

設置 URI

在應用詳情頁面,配置兩個數值:

  1. Redirect URIs:設置為 http://localhost:3000/callback 以配合項目的回調路由。
  2. Post Sign-out Redirect URIs:為簡單起見,使用 http://localhost:3000,讓用戶在登出後導向首頁。

你可以稍後更改這些數值。

用應用設置配置 Passport.js

安裝依賴

安裝 passport 和 OIDC 策略插件 passport-openidconnect

準備配置文件

創建 app/config.ts 以進行配置管理:

相應地設置環境變量:

Environment VariableDescriptionExample
APP_IDLogto 的 App ID4ukboxxxxxxxxx
APP_SECRETLogto 的 App Secret5aqccxxxxxxx
ENDPOINTLogto 的端點https://g5xxx.logto.app/

使用 OIDC 策略初始化 Passport.js

創建 src/passport.ts

這段代碼使用 OpenIDConnectStrategy 初始化 Passport。serialize 和 deserialize 方法設定用於演示目的。

確保在你的應用中初始化並附加 Passport 中介軟件:

建立身份驗證路由

我們現在將創建特定路由以處理身份驗證流程:

登錄:/sign-in

此路由構建並重定向到 OIDC 身份驗證路由。

處理登錄回調:/callback

這處理 OIDC 登錄回調,存儲令牌,並重定向到首頁。

登出:/sign-out

這會重定向至 Logto 的會話終止 URL,然後返回首頁。

獲取身份驗證狀態和保護路由

使用身份驗證狀態開發首頁:

在這裡,使用 JSON.stringify 顯示用戶信息,並使用 request.user 的存在來保護路由。

結論

恭喜你成功整合 Passport.js 與 Logto。希望這份指南可以幫助你從現有系統遷移到使用 Logto。為獲得更佳的身份驗證體驗,考慮今天嘗試使用 Logto Cloud。祝開發愉快!