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