MastraAuthAuth0 Class
The MastraAuthAuth0 class provides authentication for Mastra using Auth0. It verifies incoming requests using Auth0-issued JWT tokens and integrates with the Mastra server using the experimental_auth option.
Usage example
import { Mastra } from "@mastra/core/mastra";
import { MastraAuthAuth0 } from "@mastra/auth-auth0";
export const mastra = new Mastra({
// ..
server: {
experimental_auth: new MastraAuthAuth0({
domain: process.env.AUTH0_DOMAIN,
audience: process.env.AUTH0_AUDIENCE,
}),
},
});
Note: You can omit the constructor parameters if you have the appropriately named environment variables (
AUTH0_DOMAINandAUTH0_AUDIENCE) set. In that case, simply usenew MastraAuthAuth0()without any arguments.
Constructor parameters
domain?:
audience?:
name?:
Environment Variables
The following environment variables are automatically used when constructor options are not provided:
AUTH0_DOMAIN?:
AUTH0_AUDIENCE?:
Default Authorization Behavior
By default, MastraAuthAuth0 validates Auth0 JWT tokens and allows access to all authenticated users:
- Token Verification: The JWT token is verified using Auth0's public keys (JWKS)
- Signature Validation: Ensures the token was signed by your Auth0 tenant
- Expiration Check: Verifies the token has not expired
- Audience Validation: Confirms the token was issued for your specific API (audience)
- Issuer Validation: Ensures the token was issued by your Auth0 domain
If all validations pass, the user is considered authorized. To implement custom authorization logic (e.g., role-based access control), provide a custom authorizeUser function.
Auth0 User Type
The Auth0User type used in the authorizeUser function corresponds to the decoded JWT token payload, which typically includes:
sub: The user's unique identifier (subject)email: The user's email address (if included in token)email_verified: Whether the email is verifiedname: The user's display name (if available)picture: URL to the user's profile picture (if available)iss: Token issuer (your Auth0 domain)aud: Token audience (your API identifier)iat: Token issued at timestampexp: Token expiration timestampscope: Granted scopes for the token- Custom claims and app metadata configured in your Auth0 tenant
The exact properties available depend on your Auth0 configuration, scopes requested, and any custom claims you've configured.