MastraAuthFirebase 클래스
그만큼MastraAuthFirebase클래스는 Firebase 인증을 사용하여 Mastra에 대한 인증을 제공합니다. Firebase ID 토큰을 사용하여 들어오는 요청을 확인하고 다음을 사용하여 Mastra 서버와 통합합니다.auth옵션.
사용 예사용 예에 대한 직접 링크
환경 변수를 사용한 기본 사용법환경 변수를 사용한 기본 사용법에 대한 직접 링크
src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { MastraAuthFirebase } from '@mastra/auth-firebase'
// Automatically uses FIREBASE_SERVICE_ACCOUNT and FIRESTORE_DATABASE_ID env vars
export const mastra = new Mastra({
server: {
auth: new MastraAuthFirebase(),
},
})
맞춤 구성맞춤 구성에 대한 직접 링크
src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { MastraAuthFirebase } from '@mastra/auth-firebase'
export const mastra = new Mastra({
server: {
auth: new MastraAuthFirebase({
serviceAccount: '/path/to/service-account-key.json',
databaseId: 'your-database-id',
}),
},
})
생성자 매개변수생성자 매개변수에 대한 직접 링크
serviceAccount?:
string
= process.env.FIREBASE_SERVICE_ACCOUNT
Firebase 서비스 계정 JSON 파일의 경로입니다. 이 파일에는 서버 측에서 Firebase ID 토큰을 검증하는 데 필요한 자격 증명이 포함되어 있습니다.
databaseId?:
string
= process.env.FIRESTORE_DATABASE_ID || process.env.FIREBASE_DATABASE_ID
사용할 Firestore 데이터베이스 ID입니다. 기본 데이터베이스에는 일반적으로 '(default)'를 사용합니다.
name?:
string
= "firebase"
인증 Provider 인스턴스의 사용자 정의 이름입니다.
환경변수환경변수에 대한 직접 링크
생성자 옵션이 제공되지 않으면 다음 환경 변수가 자동으로 사용됩니다.
FIREBASE_SERVICE_ACCOUNT?:
string
Firebase 서비스 계정 JSON 파일의 경로입니다. serviceAccount 옵션을 제공하지 않은 경우 사용됩니다.
FIRESTORE_DATABASE_ID?:
string
Firestore 데이터베이스 ID입니다. 데이터베이스 구성에 사용하는 기본 환경 변수입니다.
FIREBASE_DATABASE_ID?:
string
Firestore 데이터베이스 ID의 대체 환경 변수입니다. FIRESTORE_DATABASE_ID가 설정되지 않은 경우 사용됩니다.
기본 인증 동작기본 인증 동작에 대한 직접 링크
기본적으로 MastraAuthFirebase는 Firestore를 사용하여 사용자 액세스를 관리합니다.
- Firebase ID 토큰이 성공적으로 검증되면
authorizeUser메서드가 호출됩니다. - 사용자의 UID를 문서 ID로 사용하는 문서가
user_access컬렉션에 있는지 확인합니다. - 문서가 존재하면 사용자에게 권한이 부여됩니다. 그렇지 않으면 액세스가 거부됩니다.
- 사용할 Firestore 데이터베이스는
databaseId매개변수 또는 환경 변수에 따라 결정됩니다.
Firebase 사용자 유형Firebase 사용자 유형에 대한 직접 링크
authorizeUser 함수에서 사용하는 FirebaseUser 타입은 다음 항목을 포함하는 Firebase의 DecodedIdToken 인터페이스에 해당합니다.
uid: 사용자의 고유 식별자email: 사용자의 이메일 주소(사용 가능한 경우)email_verified: 이메일 인증 여부name: 사용자의 표시 이름(사용 가능한 경우)picture: 사용자 프로필 사진의 URL(사용 가능한 경우)auth_time: 사용자가 인증한 경우- 기타 표준 JWT 주장