Clerk
@mastra/auth-clerk パッケージは、Clerk を使用した Mastra の認証を提供します。Clerk の認証システムを使用して受信リクエストを検証し、auth オプションを介して Mastra サーバーと統合します。
前提条件前提条件への直接リンク
この例では Clerk 認証を使用します。Clerk の認証情報を .env ファイルに追加し、Clerk プロジェクトが正しく設定されていることを確認してください。
CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
CLERK_JWKS_URI=https://your-clerk-domain.clerk.accounts.dev/.well-known/jwks.json
これらのキーは Clerk Dashboard の「API Keys」で確認できます。
インストールインストールへの直接リンク
MastraAuthClerk クラスを使用するには、@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
使用例使用例への直接リンク
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,
}),
},
})
デフォルトの authorizeUser メソッドでは、認証済みのすべてのユーザーが許可されます。ユーザー認可をカスタマイズするには、Provider の作成時にカスタム authorizeUser 関数を指定します。
利用可能なすべての設定オプションについては、MastraAuthClerkを参照してください。
クライアント側の設定クライアント側の設定への直接リンク
Clerk 認証を使用する場合は、クライアント側で Clerk からアクセストークンを取得し、Mastra へのリクエストに渡す必要があります。
アクセストークンの取得アクセストークンの取得への直接リンク
Clerk の React hooks を使用してユーザーを認証し、アクセストークンを取得します。
import { useAuth } from '@clerk/nextjs'
export const useClerkAuth = () => {
const { getToken } = useAuth()
const getAccessToken = async () => {
const token = await getToken()
return token
}
return { getAccessToken }
}
詳しくは、Clerk のドキュメントを参照してください。
MastraClient の設定configuring-mastraclientへの直接リンク
auth が有効な場合、MastraClient から送信するすべてのリクエストで、有効な Clerk アクセストークンを Authorization ヘッダーに含める必要があります。
import { MastraClient } from '@mastra/client-js'
export const mastraClient = new MastraClient({
baseUrl: 'https://<mastra-api-url>',
headers: {
Authorization: `Bearer ${accessToken}`,
},
})
Authorization ヘッダー内のアクセストークンには、Bearer プレフィックスが必要です。
その他の設定オプションについては、Mastra Client SDKを参照してください。
認証済みリクエストの送信認証済みリクエストの送信への直接リンク
Clerk アクセストークンを使って MastraClient を設定すると、認証済みリクエストを送信できます。
- 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"
}'