MastraAuthFirebase クラス
MastraAuthFirebase
クラスは、Firebase Authentication を用いて Mastra の認証を提供します。Firebase の ID トークンで受信リクエストを検証し、experimental_auth
オプションを使って Mastra サーバーと統合します。
使い方の例
環境変数を用いた基本的な使い方
src/mastra/index.ts
import { Mastra } from "@mastra/core/mastra";
import { MastraAuthFirebase } from '@mastra/auth-firebase';
// 環境変数 FIREBASE_SERVICE_ACCOUNT と FIRESTORE_DATABASE_ID を自動的に使用します
export const mastra = new Mastra({
// ..
server: {
experimental_auth: new MastraAuthFirebase(),
},
});
カスタム構成
src/mastra/index.ts
import { Mastra } from "@mastra/core/mastra";
import { MastraAuthFirebase } from '@mastra/auth-firebase';
export const mastra = new Mastra({
// ..
server: {
experimental_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"
認証プロバイダー インスタンスのカスタム名。
環境変数
コンストラクタのオプションが指定されていない場合、次の環境変数が自動的に使用されます:
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
メソッドが呼び出されます user_access
コレクション内に、ユーザーの UID をドキュメント ID とするドキュメントが存在するかを確認します- ドキュメントが存在すればユーザーは認可され、存在しなければアクセスは拒否されます
- 使用される Firestore データベースは、
databaseId
パラメータまたは環境変数によって決定されます
Firebase ユーザータイプ
authorizeUser
関数で使用される FirebaseUser
型は、Firebase の DecodedIdToken
インターフェースに対応しており、次の情報を含みます:
uid
: ユーザーの一意の識別子email
: ユーザーのメールアドレス(存在する場合)email_verified
: メールアドレスが確認済みかどうかname
: ユーザーの表示名(存在する場合)picture
: ユーザーのプロフィール画像の URL(存在する場合)auth_time
: ユーザーが認証した時刻- その他の標準的な JWT クレーム