Aller au contenu principal

Classe MastraAuthFirebase

La classe MastraAuthFirebase fournit l’authentification de Mastra au moyen de Firebase Authentication. Elle vérifie les requêtes entrantes à l’aide de tokens d’ID Firebase et s’intègre au serveur Mastra avec l’option auth.

Exemples d’utilisation
Lien direct vers Exemples d’utilisation

Utilisation de base avec des variables d’environnement
Lien direct vers Utilisation de base avec des variables d’environnement

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(),
},
})

Configuration personnalisée
Lien direct vers Configuration personnalisée

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',
}),
},
})

Paramètres du constructeur
Lien direct vers Paramètres du constructeur

serviceAccount?:

string
= process.env.FIREBASE_SERVICE_ACCOUNT
Chemin du fichier JSON du compte de service Firebase. Ce fichier contient les identifiants nécessaires pour vérifier les tokens d’ID Firebase côté serveur.

databaseId?:

string
= process.env.FIRESTORE_DATABASE_ID || process.env.FIREBASE_DATABASE_ID
ID de la base de données Firestore à utiliser. Généralement '(default)' pour la base de données par défaut.

name?:

string
= "firebase"
Nom personnalisé de l’instance du Provider d’authentification.

authorizeUser?:

(user: FirebaseUser) => Promise<boolean> | boolean
Fonction d’autorisation personnalisée qui détermine si l’accès doit être accordé à un utilisateur. Appelée après la vérification du token. Par défaut, vérifie la présence d’un document dans la collection 'user_access', indexée par l’UID de l’utilisateur.

Variables d’environnement
Lien direct vers Variables d’environnement

Les variables d’environnement suivantes sont utilisées automatiquement lorsque les options du constructeur ne sont pas fournies :

FIREBASE_SERVICE_ACCOUNT?:

string
Chemin du fichier JSON du compte de service Firebase. Utilisé si l’option serviceAccount n’est pas fournie.

FIRESTORE_DATABASE_ID?:

string
ID de la base de données Firestore. Variable d’environnement principale pour la configuration de la base de données.

FIREBASE_DATABASE_ID?:

string
Autre variable d’environnement pour l’ID de la base de données Firestore. Utilisée si FIRESTORE_DATABASE_ID n’est pas définie.

Comportement d’autorisation par défaut
Lien direct vers Comportement d’autorisation par défaut

Par défaut, MastraAuthFirebase utilise Firestore pour gérer l’accès des utilisateurs :

  1. Après la vérification réussie d’un token d’ID Firebase, la méthode authorizeUser est appelée
  2. Elle vérifie l’existence d’un document dans la collection user_access, avec l’UID de l’utilisateur comme ID de document
  3. Si le document existe, l’utilisateur est autorisé ; sinon, l’accès est refusé
  4. La base de données Firestore utilisée est déterminée par le paramètre databaseId ou les variables d’environnement

Type d’utilisateur Firebase
Lien direct vers Type d’utilisateur Firebase

Le type FirebaseUser utilisé dans la fonction authorizeUser correspond à l’interface DecodedIdToken de Firebase, qui comprend :

  • uid : identifiant unique de l’utilisateur
  • email : adresse e-mail de l’utilisateur, si elle est disponible
  • email_verified : indique si l’adresse e-mail est vérifiée
  • name : nom d’affichage de l’utilisateur, s’il est disponible
  • picture : URL de la photo de profil de l’utilisateur, si elle est disponible
  • auth_time : date et heure auxquelles l’utilisateur s’est authentifié
  • Et les autres claims JWT standard

Classe MastraAuthFirebase