Auth0
Le package @mastra/auth-auth0 fournit une authentification Auth0 à Mastra. Il vérifie les requêtes entrantes au moyen de jetons JWT émis par Auth0 et s’intègre au serveur Mastra grâce à l’option auth.
PrérequisLien direct vers Prérequis
Cet exemple utilise l’authentification Auth0. Assurez-vous de :
- Créer un compte Auth0 sur auth0.com
- Configurer une application dans votre tableau de bord Auth0
- Configurer une API avec un identifiant (audience) dans votre tableau de bord Auth0
- Configurer les URL de rappel, les origines web et les URL de déconnexion autorisées pour votre application
AUTH0_DOMAIN=your-tenant.auth0.com
AUTH0_AUDIENCE=your-api-identifier
Vous trouverez votre domaine dans le tableau de bord Auth0, sous Applications > Settings. L’audience correspond à l’identifiant de votre API configuré dans Auth0 Dashboard > APIs.
Pour obtenir des instructions de configuration détaillées, consultez les guides de démarrage rapide Auth0 propres à votre plateforme.
InstallationLien direct vers Installation
Avant de pouvoir utiliser la classe MastraAuthAuth0, vous devez installer le package @mastra/auth-auth0.
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/auth-auth0@latest
pnpm add @mastra/auth-auth0@latest
yarn add @mastra/auth-auth0@latest
bun add @mastra/auth-auth0@latest
Exemples d’utilisationLien direct vers Exemples d’utilisation
Utilisation de base avec des variables d’environnementLien direct vers Utilisation de base avec des variables d’environnement
import { Mastra } from '@mastra/core'
import { MastraAuthAuth0 } from '@mastra/auth-auth0'
export const mastra = new Mastra({
server: {
auth: new MastraAuthAuth0(),
},
})
Configuration personnaliséeLien direct vers Configuration personnalisée
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,
}),
},
})
ConfigurationLien direct vers Configuration
Autorisation des utilisateursLien direct vers Autorisation des utilisateurs
Par défaut, MastraAuthAuth0 autorise tous les utilisateurs authentifiés qui possèdent des jetons Auth0 valides pour l’audience indiquée. La vérification du jeton garantit que :
- Le jeton est correctement signé par Auth0
- Le jeton n’a pas expiré
- L’audience du jeton correspond à celle que vous avez configurée
- L’émetteur du jeton correspond à votre domaine Auth0
Pour personnaliser l’autorisation des utilisateurs, fournissez une fonction authorizeUser personnalisée :
import { MastraAuthAuth0 } from '@mastra/auth-auth0'
const auth0Provider = new MastraAuthAuth0({
authorizeUser: async user => {
// Custom authorization logic
return user.email?.endsWith('@yourcompany.com') || false
},
})
Consultez la page MastraAuthAuth0 pour découvrir toutes les options de configuration disponibles.
Configuration côté clientLien direct vers Configuration côté client
Lorsque vous utilisez l’authentification Auth0, vous devez configurer le SDK React Auth0, authentifier les utilisateurs et récupérer leurs jetons d’accès afin de les transmettre à vos requêtes Mastra.
Configurer le SDK React Auth0Lien direct vers Configurer le SDK React Auth0
Commencez par installer et configurer le SDK React Auth0 dans votre application :
- npm
- pnpm
- Yarn
- Bun
npm install @auth0/auth0-react
pnpm add @auth0/auth0-react
yarn add @auth0/auth0-react
bun add @auth0/auth0-react
import React from 'react'
import { Auth0Provider } from '@auth0/auth0-react'
const Auth0ProviderWithHistory = ({ children }) => {
return (
<Auth0Provider
domain={process.env.REACT_APP_AUTH0_DOMAIN}
clientId={process.env.REACT_APP_AUTH0_CLIENT_ID}
authorizationParams={{
redirect_uri: window.location.origin,
audience: process.env.REACT_APP_AUTH0_AUDIENCE,
scope: 'read:current_user update:current_user_metadata',
}}
>
{children}
</Auth0Provider>
)
}
export default Auth0ProviderWithHistory
Récupérer les jetons d’accèsLien direct vers Récupérer les jetons d’accès
Utilisez le SDK React Auth0 pour authentifier les utilisateurs et récupérer leurs jetons d’accès :
import { useAuth0 } from '@auth0/auth0-react'
export const useAuth0Token = () => {
const { getAccessTokenSilently } = useAuth0()
const getAccessToken = async () => {
const token = await getAccessTokenSilently()
return token
}
return { getAccessToken }
}
Consultez la documentation du SDK React Auth0 pour découvrir d’autres méthodes d’authentification et options de configuration.
Configurer MastraClientLien direct vers configuring-mastraclient
Lorsque auth est activée, toutes les requêtes effectuées avec MastraClient doivent inclure un jeton d’accès Auth0 valide dans l’en-tête Authorization :
import { MastraClient } from '@mastra/client-js'
export const createMastraClient = (accessToken: string) => {
return new MastraClient({
baseUrl: 'https://<mastra-api-url>',
headers: {
Authorization: `Bearer ${accessToken}`,
},
})
}
Le jeton d’accès doit être précédé de Bearer dans l’en-tête Authorization.
Consultez le SDK client Mastra pour davantage d’options de configuration.
Effectuer des requêtes authentifiéesLien direct vers Effectuer des requêtes authentifiées
Une fois MastraClient configuré avec le jeton d’accès Auth0, vous pouvez envoyer des requêtes authentifiées :
- React
- cURL
import React, { useState } from 'react'
import { useAuth0 } from '@auth0/auth0-react'
import { MastraClient } from '@mastra/client-js'
export const MastraApiTest = () => {
const { getAccessTokenSilently } = useAuth0()
const [result, setResult] = useState(null)
const callMastraApi = async () => {
const token = await getAccessTokenSilently()
const mastra = new MastraClient({
baseUrl: 'http://localhost:4111',
headers: {
Authorization: `Bearer ${token}`,
},
})
const weatherAgent = mastra.getAgent('weatherAgent')
const response = await weatherAgent.generate("What's the weather like in New York")
setResult(response.text)
}
return (
<div>
<button onClick={callMastraApi}>Test Mastra API</button>
{result && (
<div className="result">
<h6>Result:</h6>
<pre>{result}</pre>
</div>
)}
</div>
)
}
curl -X POST http://localhost:4111/api/agents/weatherAgent/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-auth0-access-token>" \
-d '{
"messages": "Weather in London"
}'