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érequisLien direct vers 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é.
CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
CLERK_JWKS_URI=https://your-clerk-domain.clerk.accounts.dev/.well-known/jwks.json
Vous trouverez ces clés dans le tableau de bord Clerk, sous « API Keys ».
InstallationLien direct vers Installation
Avant d'utiliser la classe MastraAuthClerk, vous devez installer le package @mastra/auth-clerk.
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/auth-clerk@latest
pnpm add @mastra/auth-clerk@latest
yarn add @mastra/auth-clerk@latest
bun add @mastra/auth-clerk@latest
Exemple d'utilisationLien direct vers Exemple d'utilisation
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,
}),
},
})
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 pour découvrir toutes les options de configuration disponibles.
Configuration côté clientLien direct vers 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èsLien direct vers 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 :
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 pour plus d'informations.
Configurer MastraClientLien direct vers configuring-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 :
import { MastraClient } from '@mastra/client-js'
export const mastraClient = 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 Clerk, vous pouvez envoyer des requêtes authentifiées :
- React
- cURL
'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 <button onClick={handleClick}>Test Agent</button>
}
curl -X POST http://localhost:4111/api/agents/weatherAgent/generate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-clerk-access-token>" \
-d '{
"messages": "Weather in London"
}'