단순 인증
그만큼SimpleAuth클래스는 기본 토큰-사용자 매핑을 사용하여 토큰 기반 인증을 제공합니다. 에 포함되어 있습니다@mastra/core/server개발, 테스트 및 기본 API 키 인증 시나리오에 유용합니다.
사용 사례사용 사례에 대한 직접 링크
- 로컬 개발 및 테스트
- 간단한 API 키 인증
- 전체 ID 공급자를 통합하기 전 프로토타입 제작
- 정적 토큰을 사용한 내부 서비스
설치설치에 대한 직접 링크
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(있든 없든Bearerprefix)X-Playground-Access
다음을 사용하여 사용자 정의 헤더를 추가합니다.headers option:
new SimpleAuth({
tokens: {/* ... */},
headers: ['X-API-Key', 'X-Custom-Auth'],
})
인증된 요청 만들기인증된 요청 만들기에 대한 직접 링크
토큰을Authorization header:
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 prefix:
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 }),
},
})
와 함께MastraClientwith-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는 프로덕션 보안이 아닌 단순성을 위해 설계되었습니다.
- 토큰은 Memory에 저장됩니다.
- 토큰 만료 또는 새로 고침 없음
- 암호화 확인 없음
- 시작 시 모든 토큰을 알아야 합니다.
프로덕션 애플리케이션에는 JWT, Clerk, Auth0 또는 다른 ID Provider를 사용하는 것이 좋습니다.