跳至主要內容

MastraAuthAuth0 類別

MastraAuthAuth0 類別使用 Auth0 為 Mastra 提供身分驗證。它會使用 Auth0 核發的 JWT token 驗證傳入要求,並透過 auth 選項與 Mastra 伺服器整合。

使用範例
「使用範例」的直接連結

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { MastraAuthAuth0 } from '@mastra/auth-auth0'

export const mastra = new Mastra({
server: {
auth: new MastraAuthAuth0({
domain: process.env.AUTH0_DOMAIN,
audience: process.env.AUTH0_AUDIENCE,
}),
},
})
備註

若已設定必要的環境變數(AUTH0_DOMAINAUTH0_AUDIENCE),可以省略建構函式參數。在這種情況下,請使用不帶任何引數的 new MastraAuthAuth0()

建構函式參數
「建構函式參數」的直接連結

domain?:

string
= process.env.AUTH0_DOMAIN
你的 Auth0 網域(例如 your-tenant.auth0.com)。此網域用於驗證由你的 Auth0 tenant 核發的 JWT token。

audience?:

string
= process.env.AUTH0_AUDIENCE
你的 Auth0 API 識別碼/audience。這可確保 token 是核發給你指定的 API。

name?:

string
= "auth0"
身分驗證 Provider 執行個體的自訂名稱。

authorizeUser?:

(user: Auth0User) => Promise<boolean> | boolean
自訂授權函式,用於判斷是否應授予使用者存取權。此函式會在 token 驗證後呼叫。預設允許所有持有有效 token 且已通過身分驗證的使用者。

環境變數
「環境變數」的直接連結

未提供建構函式選項時,會自動使用以下環境變數:

AUTH0_DOMAIN?:

string
你的 Auth0 網域。可在 Auth0 Dashboard 的 Applications > Settings 中找到。

AUTH0_AUDIENCE?:

string
你的 Auth0 API 識別碼。這是你在 Auth0 Dashboard 中建立 API 時所設定的識別碼。

預設授權行為
「預設授權行為」的直接連結

MastraAuthAuth0 預設會驗證 Auth0 JWT token,並允許所有已通過身分驗證的使用者存取:

  1. Token 驗證:使用 Auth0 的公開金鑰(JWKS)驗證 JWT token
  2. 簽章驗證:確保 token 是由你的 Auth0 tenant 簽署
  3. 到期檢查:確認 token 尚未到期
  4. Audience 驗證:確認 token 是為你指定的 API(audience)核發
  5. Issuer 驗證:確保 token 是由你的 Auth0 網域核發

如果所有驗證都通過,使用者即視為已獲授權。若要實作自訂授權邏輯(例如角色型存取控制),請提供自訂的 authorizeUser 函式。

Auth0 使用者型別
「Auth0 使用者型別」的直接連結

authorizeUser 函式所使用的 Auth0User 型別對應至解碼後的 JWT token payload,通常包含:

  • sub:使用者的唯一識別碼(subject)
  • email:使用者的電子郵件地址(若 token 中有提供)
  • email_verified:電子郵件是否已驗證
  • name:使用者的顯示名稱(若有)
  • picture:使用者個人資料圖片的 URL(若有)
  • iss:Token issuer(你的 Auth0 網域)
  • aud:Token audience(你的 API 識別碼)
  • iat:Token 核發時間戳記
  • exp:Token 到期時間戳記
  • scope:授予 token 的 scope
  • 在 Auth0 tenant 中設定的自訂 claim 與應用程式中繼資料

實際可用的屬性取決於你的 Auth0 設定、要求的 scope,以及你所設定的任何自訂 claim。

MastraAuthAuth0 類別