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