> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # 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érequis Cet exemple utilise l’authentification Auth0. Assurez-vous de : 1. Créer un compte Auth0 sur [auth0.com](https://auth0.com/) 2. Configurer une application dans votre tableau de bord Auth0 3. Configurer une API avec un identifiant (audience) dans votre tableau de bord Auth0 4. Configurer les URL de rappel, les origines web et les URL de déconnexion autorisées pour votre application ```env AUTH0_DOMAIN=your-tenant.auth0.com AUTH0_AUDIENCE=your-api-identifier ``` > **Remarque:** 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](https://auth0.com/docs/quickstarts) propres à votre plateforme. ## Installation Avant de pouvoir utiliser la classe `MastraAuthAuth0`, vous devez installer le package `@mastra/auth-auth0`. **npm**: ```bash npm install @mastra/auth-auth0@latest ``` **pnpm**: ```bash pnpm add @mastra/auth-auth0@latest ``` **Yarn**: ```bash yarn add @mastra/auth-auth0@latest ``` **Bun**: ```bash bun add @mastra/auth-auth0@latest ``` ## Exemples d’utilisation ### Utilisation de base avec des variables d’environnement ```typescript import { Mastra } from '@mastra/core' import { MastraAuthAuth0 } from '@mastra/auth-auth0' export const mastra = new Mastra({ server: { auth: new MastraAuthAuth0(), }, }) ``` ### Configuration personnalisée ```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, }), }, }) ``` ## Configuration ### 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 : 1. Le jeton est correctement signé par Auth0 2. Le jeton n’a pas expiré 3. L’audience du jeton correspond à celle que vous avez configurée 4. L’émetteur du jeton correspond à votre domaine Auth0 Pour personnaliser l’autorisation des utilisateurs, fournissez une fonction `authorizeUser` personnalisée : ```typescript 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](https://mastra.zisheng.pro/fr/reference/auth/auth0) pour découvrir toutes les options de configuration disponibles. ## 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 Auth0 Commencez par installer et configurer le SDK React Auth0 dans votre application : **npm**: ```bash npm install @auth0/auth0-react ``` **pnpm**: ```bash pnpm add @auth0/auth0-react ``` **Yarn**: ```bash yarn add @auth0/auth0-react ``` **Bun**: ```bash bun add @auth0/auth0-react ``` ```typescript import React from 'react' import { Auth0Provider } from '@auth0/auth0-react' const Auth0ProviderWithHistory = ({ children }) => { return ( {children} ) } export default Auth0ProviderWithHistory ``` ### 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 : ```typescript import { useAuth0 } from '@auth0/auth0-react' export const useAuth0Token = () => { const { getAccessTokenSilently } = useAuth0() const getAccessToken = async () => { const token = await getAccessTokenSilently() return token } return { getAccessToken } } ``` > **Remarque:** Consultez la [documentation du SDK React Auth0](https://auth0.com/docs/libraries/auth0-react) pour découvrir d’autres méthodes d’authentification et options de configuration. ## Configurer `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` : ```typescript import { MastraClient } from '@mastra/client-js' export const createMastraClient = (accessToken: string) => { return new MastraClient({ baseUrl: 'https://', headers: { Authorization: `Bearer ${accessToken}`, }, }) } ``` > **Info:** Le jeton d’accès doit être précédé de `Bearer` dans l’en-tête Authorization. > > Consultez le [SDK client Mastra](https://mastra.zisheng.pro/fr/docs/server/mastra-client) pour davantage d’options de configuration. ### 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**: ```tsx 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 (
{result && (
Result:
{result}
)}
) } ``` **cURL**: ```bash curl -X POST http://localhost:4111/api/agents/weatherAgent/generate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer " \ -d '{ "messages": "Weather in London" }' ```