IFGAProvider
IFGAProvider インターフェースは、きめ細かな認可(FGA)Provider を定義します。Mastra はこのインターフェースを呼び出し、ユーザーまたはシステム Actor が特定のリソースに対して権限を行使できるかどうかを判断します。Mastra を WorkOS Authorization などの FGA backend に接続するには、このインターフェースを実装します。
Mastra が FGA を適用する概念、設定、ライフサイクル上のポイントについては、きめ細かな認可を参照してください。
使用例使用例への直接リンク
次の例では、最小限の Provider を実装します。require は拒否時にエラーをスローし、check は boolean を返します。
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
}
}
メソッドメソッドへの直接リンク
check(user, params)checkuser-paramsへの直接リンク
user がリソースに対する権限を持つかどうかを返します。フィルタリングや条件付き UI など、エラーをスローしない確認に使用します。
戻り値:Promise<boolean>
require(user, params)requireuser-paramsへの直接リンク
FGADeniedError は、user に権限がない場合にスローされます。Mastra は、このメソッドを適用ポイントで呼び出します。
戻り値:Promise<void>
filterAccessible(user, resources, resourceType, permission)filteraccessibleuser-resources-resourcetype-permissionへの直接リンク
resources のうち、user が permission を使用してアクセスできるものを返します。
戻り値:Promise<T[]>
requireActor(actor, params)requireactoractor-paramsへの直接リンク
自律型またはスケジュールされた Agent など、ユーザーではないシステム Actor を認可します。任意です。
システム Actor はユーザー中心の require() パスを通らないため、Actor ごとに最小権限を適用するには requireActor を実装します。拒否するには FGADeniedError をスローします。Provider が requireActor を実装していない場合、Mastra は信頼された Actor のバイパス(tenant scope の確認後に許可)を維持するため、このメソッドを追加しても後方互換性が保たれます。
actor.permissions は信頼できない claim として扱ってください。inline の値を信頼するのではなく、actor.agentId をキーとして信頼できるソースから Agent の正式な grant を解決します。システム Actorを参照してください。
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)
}
}
}
戻り値:Promise<void>
設定プロパティ設定プロパティへの直接リンク
任意のプロパティで、ルートの適用範囲と起動時の検証を制御します。
requireForProtectedRoutes?:
auditProtectedRoutes?:
resolveRouteFGA?:
validatePermissions?:
パラメーターパラメーターへの直接リンク
params は、check、require、requireActor に渡される引数です。
resource:
permission:
context?:
ActorSignalactorsignalへの直接リンク
認証済みのエンドユーザーではなく、信頼されたユーザー以外の Actor による呼び出しを識別します。値は true(匿名システムを表す省略形)、または実行する Agent の名前と Provider が適用できる grant を持つオブジェクトのいずれかです。
actorKind:
agentId?:
permissions?:
scope?:
sourceWorkflow?:
FGADeniedErrorfgadeniederrorへの直接リンク
認可の確認が拒否された場合にスローされます。require と requireActor は拒否時にこのエラーをスローし、Mastra は 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.