跳到主要内容

MastraAuthAuth0 类

MastraAuthAuth0 类使用 Auth0 为 Mastra 提供身份验证。它通过 Auth0 签发的 JWT token 验证传入请求,并使用 auth 选项与 Mastra server 集成。

使用示例
使用示例的直接链接

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 domain(例如 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 domain,可在 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 domain 签发

如果所有验证均通过,则视为用户已获授权。如需实现自定义授权逻辑(例如基于角色的访问控制),请提供自定义 authorizeUser 函数。

Auth0 用户类型
Auth0 用户类型的直接链接

authorizeUser 函数使用的 Auth0User 类型对应解码后的 JWT token payload,通常包括:

  • sub:用户的唯一标识符(subject)
  • email:用户的电子邮件地址(如果 token 中包含)
  • email_verified:电子邮件是否已验证
  • name:用户的显示名称(如果可用)
  • picture:用户头像的 URL(如果可用)
  • iss:Token issuer(你的 Auth0 domain)
  • aud:Token audience(你的 API 标识符)
  • iat:Token 签发时间戳
  • exp:Token 过期时间戳
  • scope:授予 token 的 scope
  • 在 Auth0 tenant 中配置的自定义 claim 和应用 metadata

具体可用属性取决于 Auth0 配置、请求的 scope 以及配置的任何自定义 claim。

MastraAuthAuth0 类