> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Clerk Le package `@mastra/auth-clerk` fournit l'authentification Clerk à Mastra. Il vérifie les requêtes entrantes au moyen du système d'authentification de Clerk et s'intègre au serveur Mastra grâce à l'option `auth`. ## Prérequis Cet exemple utilise l'authentification Clerk. Ajoutez vos identifiants Clerk à votre fichier `.env` et vérifiez que votre projet Clerk est correctement configuré. ```env CLERK_PUBLISHABLE_KEY=pk_test_... CLERK_SECRET_KEY=sk_test_... CLERK_JWKS_URI=https://your-clerk-domain.clerk.accounts.dev/.well-known/jwks.json ``` > **Remarque:** Vous trouverez ces clés dans le tableau de bord Clerk, sous « API Keys ». ## Installation Avant d'utiliser la classe `MastraAuthClerk`, vous devez installer le package `@mastra/auth-clerk`. **npm**: ```bash npm install @mastra/auth-clerk@latest ``` **pnpm**: ```bash pnpm add @mastra/auth-clerk@latest ``` **Yarn**: ```bash yarn add @mastra/auth-clerk@latest ``` **Bun**: ```bash bun add @mastra/auth-clerk@latest ``` ## Exemple d'utilisation ```typescript import { Mastra } from '@mastra/core' import { MastraAuthClerk } from '@mastra/auth-clerk' export const mastra = new Mastra({ server: { auth: new MastraAuthClerk({ publishableKey: process.env.CLERK_PUBLISHABLE_KEY, secretKey: process.env.CLERK_SECRET_KEY, jwksUri: process.env.CLERK_JWKS_URI, }), }, }) ``` > **Info:** La méthode `authorizeUser` par défaut autorise tous les utilisateurs authentifiés. Pour personnaliser les autorisations, fournissez une fonction `authorizeUser` personnalisée lors de la création du Provider. > > Consultez [MastraAuthClerk](https://mastra.zisheng.pro/fr/reference/auth/clerk) pour découvrir toutes les options de configuration disponibles. ## Configuration côté client Lorsque vous utilisez l'authentification Clerk, vous devez récupérer le jeton d'accès Clerk côté client et le transmettre dans vos requêtes Mastra. ### Récupérer le jeton d'accès Utilisez les hooks React de Clerk pour authentifier les utilisateurs et récupérer leur jeton d'accès : ```typescript import { useAuth } from '@clerk/nextjs' export const useClerkAuth = () => { const { getToken } = useAuth() const getAccessToken = async () => { const token = await getToken() return token } return { getAccessToken } } ``` Consultez la [documentation de Clerk](https://clerk.com/docs) pour plus d'informations. ## Configurer `MastraClient` Lorsque `auth` est activé, toutes les requêtes effectuées avec `MastraClient` doivent inclure un jeton d'accès Clerk valide dans l'en-tête `Authorization` : ```typescript import { MastraClient } from '@mastra/client-js' export const mastraClient = 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 Clerk, vous pouvez envoyer des requêtes authentifiées : **React**: ```tsx 'use client' import { useAuth } from '@clerk/nextjs' import { MastraClient } from '@mastra/client-js' export const TestAgent = () => { const { getToken } = useAuth() async function handleClick() { const token = await getToken() const client = new MastraClient({ baseUrl: 'http://localhost:4111', headers: token ? { Authorization: `Bearer ${token}` } : undefined, }) const weatherAgent = client.getAgent('weatherAgent') const response = await weatherAgent.generate("What's the weather like in New York") console.log({ response }) } return } ``` **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" }' ```