> 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 (