> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Simple Auth `SimpleAuth` クラスは、基本的なトークンとユーザーのマッピングによるトークンベース認証を提供します。`@mastra/core/server` に含まれており、開発、テスト、基本的な API キー認証に役立ちます。 ## ユースケース - ローカルでの開発とテスト - シンプルな API キー認証 - 本格的なアイデンティティ Provider を統合する前のプロトタイピング - 静的トークンを使用する内部サービス ## インストール `SimpleAuth` は `@mastra/core` に含まれているため、追加のパッケージは不要です。 ```typescript import { SimpleAuth } from '@mastra/core/server' ``` ## 使用例 ```typescript import { Mastra } from '@mastra/core' import { SimpleAuth } from '@mastra/core/server' // Define your user type type User = { id: string name: string role: 'admin' | 'user' } export const mastra = new Mastra({ server: { auth: new SimpleAuth({ tokens: { 'sk-admin-token-123': { id: 'user-1', name: 'Admin User', role: 'admin', }, 'sk-user-token-456': { id: 'user-2', name: 'Regular User', role: 'user', }, }, }), }, }) ``` ## 設定オプション | オプション | 型 | 必須 | 説明 | | --------------- | ---------------------------- | --- | --------------------- | | `tokens` | `Record` | はい | トークンからユーザーオブジェクトへのマップ | | `headers` | `string \| string[]` | いいえ | トークンを確認する追加ヘッダー | | `name` | `string` | いいえ | ログ記録用の Provider 名 | | `authorizeUser` | `(user, request) => boolean` | いいえ | カスタム認可関数 | | `protected` | `(RegExp \| string)[]` | いいえ | 認証が必要なパス | | `public` | `(RegExp \| string)[]` | いいえ | 認証を省略するパス | ### デフォルトヘッダー SimpleAuth はデフォルトで次のヘッダーを確認します。 - `Authorization`(`Bearer` プレフィックスの有無は問いません) - `X-Playground-Access` `headers` オプションを使用してカスタムヘッダーを追加できます。 ```typescript new SimpleAuth({ tokens: {/* ... */}, headers: ['X-API-Key', 'X-Custom-Auth'], }) ``` ## 認証済みリクエストの送信 `Authorization` ヘッダーにトークンを含めます。 ```bash curl -X POST http://localhost:4111/api/agents/myAgent/generate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-admin-token-123" \ -d '{"messages": "Hello"}' ``` `Bearer` プレフィックスを省略することもできます。 ```bash curl -X POST http://localhost:4111/api/agents/myAgent/generate \ -H "Content-Type: application/json" \ -H "Authorization: sk-admin-token-123" \ -d '{"messages": "Hello"}' ``` ## カスタム認可 ロールベースまたはカスタムの認可ロジックを追加します。 ```typescript new SimpleAuth({ tokens: { 'sk-admin-token': { id: '1', name: 'Admin', role: 'admin' }, 'sk-user-token': { id: '2', name: 'User', role: 'user' }, }, authorizeUser: (user, request) => { // Only admins can access /admin routes if (request.url.includes('/admin')) { return user.role === 'admin' } return true }, }) ``` ## 環境変数 本番環境に近い構成では、環境変数からトークンを読み込みます。 ```typescript const tokens: Record = {} // Load from environment const adminToken = process.env.ADMIN_API_KEY if (adminToken) { tokens[adminToken] = { id: 'admin', name: 'Admin', role: 'admin' } } const userToken = process.env.USER_API_KEY if (userToken) { tokens[userToken] = { id: 'user', name: 'User', role: 'user' } } export const mastra = new Mastra({ server: { auth: new SimpleAuth({ tokens }), }, }) ``` ## `MastraClient` との併用 トークンを使ってクライアントを設定します。 ```typescript import { MastraClient } from '@mastra/client-js' const client = new MastraClient({ baseUrl: 'http://localhost:4111', headers: { Authorization: 'Bearer sk-admin-token-123', }, }) const agent = client.getAgent('myAgent') const response = await agent.generate('Hello') ``` ## 制限事項 SimpleAuth は簡潔さを重視しており、本番環境のセキュリティ向けではありません。 - トークンはメモリ内に保存される - トークンの有効期限や更新機能がない - 暗号学的検証を行わない - 起動時にすべてのトークンが既知である必要がある 本番アプリケーションでは、[JWT](https://mastra.zisheng.pro/ja/docs/server/auth/jwt)、[Clerk](https://mastra.zisheng.pro/ja/docs/server/auth/clerk)、[Auth0](https://mastra.zisheng.pro/ja/docs/server/auth/auth0)、または別のアイデンティティ Provider の使用を検討してください。