IFGAProvider
L’interface IFGAProvider définit un Provider d’autorisation granulaire (FGA). Mastra l’appelle pour déterminer si un utilisateur ou un acteur système peut exercer une permission sur une ressource donnée. Implémentez-la pour connecter Mastra à un backend FGA tel que WorkOS Authorization.
Pour découvrir les concepts, la configuration et les étapes du cycle de vie auxquelles Mastra applique FGA, consultez la page Autorisation granulaire.
Exemple d’utilisationLien direct vers Exemple d’utilisation
L’exemple suivant implémente un Provider minimal. require lève une erreur pour refuser l’accès, tandis que check renvoie un booléen.
import { FGADeniedError } from '@mastra/core/auth/ee'
import type { FGACheckParams, IFGAProvider, MastraFGAPermissionInput } from '@mastra/core/auth/ee'
class MyFGAProvider implements IFGAProvider {
async check(user: any, params: FGACheckParams): Promise<boolean> {
// Your authorization logic.
return true
}
async require(user: any, params: FGACheckParams): Promise<void> {
if (!(await this.check(user, params))) {
throw new FGADeniedError(user, params.resource, params.permission)
}
}
async filterAccessible<T extends { id: string }>(
user: any,
resources: T[],
resourceType: string,
permission: MastraFGAPermissionInput,
): Promise<T[]> {
return resources
}
}
MéthodesLien direct vers Méthodes
check(user, params)Lien direct vers checkuser-params
Indique si user possède la permission sur la ressource. Utilisez cette méthode pour les vérifications qui ne lèvent pas d’erreur, comme le filtrage ou les interfaces conditionnelles.
Renvoie : Promise<boolean>
require(user, params)Lien direct vers requireuser-params
Lève FGADeniedError lorsque user ne possède pas la permission. Mastra appelle cette méthode à ses points d’application.
Renvoie : Promise<void>
filterAccessible(user, resources, resourceType, permission)Lien direct vers filteraccessibleuser-resources-resourcetype-permission
Renvoie le sous-ensemble de resources auquel user peut accéder avec permission.
Renvoie : Promise<T[]>
requireActor(actor, params)Lien direct vers requireactoractor-params
Autorise un acteur système qui n’est pas un utilisateur, tel qu’un Agent autonome ou planifié. Facultatif.
Les acteurs système contournent le chemin require() centré sur l’utilisateur. Implémentez donc requireActor afin d’appliquer pour eux le principe du moindre privilège à chaque Agent. Levez FGADeniedError pour refuser l’accès. Lorsqu’un Provider n’implémente pas requireActor, Mastra conserve le contournement destiné aux acteurs de confiance, c’est-à-dire l’autorisation après vérification de la portée du tenant. L’ajout de cette méthode reste ainsi rétrocompatible.
Traitez actor.permissions comme un claim non fiable. Résolvez les autorisations faisant foi de l’Agent à partir d’une source de confiance indexée par actor.agentId, au lieu de vous fier aux valeurs intégrées. Consultez la section Acteurs système.
import { FGADeniedError } from '@mastra/core/auth/ee'
import type { ActorSignal, FGACheckParams, IFGAProvider } from '@mastra/core/auth/ee'
class MyFGAProvider implements IFGAProvider {
// ...check, require, filterAccessible...
async requireActor(actor: ActorSignal, params: FGACheckParams): Promise<void> {
const agentId = actor === true ? undefined : actor.agentId
// Resolve the agent's authoritative grants from a trusted source keyed by agentId.
const granted = await this.grantsForAgent(agentId)
const required = Array.isArray(params.permission) ? params.permission : [params.permission]
if (!required.some(permission => granted.includes(permission))) {
throw new FGADeniedError(null, params.resource, params.permission)
}
}
}
Renvoie : Promise<void>
Propriétés de configurationLien direct vers Propriétés de configuration
Des propriétés facultatives contrôlent la couverture des routes et la validation au démarrage.
requireForProtectedRoutes?:
auditProtectedRoutes?:
resolveRouteFGA?:
validatePermissions?:
ParamètresLien direct vers Paramètres
Argument params transmis à check, require et requireActor.
resource:
permission:
context?:
ActorSignalLien direct vers actorsignal
Identifie un appel effectué par un acteur de confiance qui n’est pas un utilisateur, plutôt que par un utilisateur final authentifié. Il s’agit soit de true, forme abrégée du système anonyme, soit d’un objet qui nomme l’Agent agissant et contient les autorisations qu’un Provider peut appliquer.
actorKind:
agentId?:
permissions?:
scope?:
sourceWorkflow?:
FGADeniedErrorLien direct vers fgadeniederror
Erreur levée lorsqu’une vérification d’autorisation est refusée. require et requireActor la lèvent pour refuser l’accès, et Mastra la présente comme une réponse HTTP 403.
import { FGADeniedError } from '@mastra/core/auth/ee'
throw new FGADeniedError(user, { type: 'agent', id: 'reporter' }, 'agents:execute')
// Optional fourth argument: a reason string included in the error message.