Simple Auth
SimpleAuth クラスは、基本的なトークンとユーザーのマッピングによるトークンベース認証を提供します。@mastra/core/server に含まれており、開発、テスト、基本的な API キー認証に役立ちます。
ユースケースユースケースへの直接リンク
- ローカルでの開発とテスト
- シンプルな API キー認証
- 本格的なアイデンティティ Provider を統合する前のプロトタイピング
- 静的トークンを使用する内部サービス
インストールインストールへの直接リンク
SimpleAuth は @mastra/core に含まれているため、追加のパッケージは不要です。
import { SimpleAuth } from '@mastra/core/server'
使用例使用例への直接リンク
src/mastra/index.ts
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<User>({
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<string, TUser> | はい | トークンからユーザーオブジェクトへのマップ |
headers | string | string[] | いいえ | トークンを確認する追加ヘッダー |
name | string | いいえ | ログ記録用の Provider 名 |
authorizeUser | (user, request) => boolean | いいえ | カスタム認可関数 |
protected | (RegExp | string)[] | いいえ | 認証が必要なパス |
public | (RegExp | string)[] | いいえ | 認証を省略するパス |
デフォルトヘッダーデフォルトヘッダーへの直接リンク
SimpleAuth はデフォルトで次のヘッダーを確認します。
Authorization(Bearerプレフィックスの有無は問いません)X-Playground-Access
headers オプションを使用してカスタムヘッダーを追加できます。
new SimpleAuth({
tokens: {/* ... */},
headers: ['X-API-Key', 'X-Custom-Auth'],
})
認証済みリクエストの送信認証済みリクエストの送信への直接リンク
Authorization ヘッダーにトークンを含めます。
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 プレフィックスを省略することもできます。
curl -X POST http://localhost:4111/api/agents/myAgent/generate \
-H "Content-Type: application/json" \
-H "Authorization: sk-admin-token-123" \
-d '{"messages": "Hello"}'
カスタム認可カスタム認可への直接リンク
ロールベースまたはカスタムの認可ロジックを追加します。
new SimpleAuth<User>({
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
},
})
環境変数環境変数への直接リンク
本番環境に近い構成では、環境変数からトークンを読み込みます。
const tokens: Record<string, User> = {}
// 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 との併用with-mastraclientへの直接リンク
トークンを使ってクライアントを設定します。
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、Clerk、Auth0、または別のアイデンティティ Provider の使用を検討してください。