> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # MastraAuthAuth0 類別 `MastraAuthAuth0` 類別使用 Auth0 為 Mastra 提供身分驗證。它會使用 Auth0 核發的 JWT token 驗證傳入要求,並透過 `auth` 選項與 Mastra 伺服器整合。 ## 使用範例 ```typescript 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_DOMAIN` 和 `AUTH0_AUDIENCE`),可以省略建構函式參數。在這種情況下,請使用不帶任何引數的 `new MastraAuthAuth0()`。 ## 建構函式參數 **domain** (`string`): 你的 Auth0 網域(例如 your-tenant.auth0.com)。此網域用於驗證由你的 Auth0 tenant 核發的 JWT token。 (Default: `process.env.AUTH0_DOMAIN`) **audience** (`string`): 你的 Auth0 API 識別碼/audience。這可確保 token 是核發給你指定的 API。 (Default: `process.env.AUTH0_AUDIENCE`) **name** (`string`): 身分驗證 Provider 執行個體的自訂名稱。 (Default: `"auth0"`) **authorizeUser** (`(user: Auth0User) => Promise | 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 使用者型別 `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 類別](https://mastra.zisheng.pro/zh-TW/docs/server/auth/auth0)