Classes MastraAuthOkta et MastraRBACOkta
Classe MastraAuthOktaLien direct vers Classe MastraAuthOkta
La classe MastraAuthOkta fournit une authentification pour Mastra à l’aide d’Okta. Elle implémente un flux de connexion OAuth 2.0 / OIDC avec des cookies de session chiffrés et s’intègre au serveur Mastra par l’intermédiaire de l’option auth.
Exemple d’utilisationLien direct vers Exemple d’utilisation
import { Mastra } from '@mastra/core'
import { MastraAuthOkta } from '@mastra/auth-okta'
export const mastra = new Mastra({
server: {
auth: new MastraAuthOkta({
domain: process.env.OKTA_DOMAIN,
clientId: process.env.OKTA_CLIENT_ID,
clientSecret: process.env.OKTA_CLIENT_SECRET,
redirectUri: process.env.OKTA_REDIRECT_URI,
}),
},
})
Vous pouvez omettre les paramètres du constructeur si les variables d’environnement requises sont définies. Dans ce cas, utilisez new MastraAuthOkta() sans argument.
Paramètres du constructeurLien direct vers Paramètres du constructeur
domain?:
dev-123456.okta.com). Utilisé pour construire l’URL de l’émetteur et les endpoints d’API.clientId?:
clientSecret?:
issuer?:
redirectUri?:
scopes?:
apiToken?:
getUser() renvoie les données utilisateur par ID.session?:
cookieName?:
cookieMaxAge?:
cookiePassword?:
secureCookies?:
Secure sur les cookies de session.name?:
Variables d’environnementLien direct vers Variables d’environnement
Les variables d’environnement suivantes sont automatiquement utilisées lorsque les options du constructeur ne sont pas fournies :
OKTA_DOMAIN:
dev-123456.okta.com). Vous le trouverez dans votre console d’administration Okta.OKTA_CLIENT_ID:
OKTA_CLIENT_SECRET:
OKTA_ISSUER?:
https://{domain}/oauth2/default si elle n’est pas définie.OKTA_REDIRECT_URI:
OKTA_COOKIE_PASSWORD?:
OKTA_API_TOKEN?:
Flux d’authentificationLien direct vers Flux d’authentification
MastraAuthOkta authentifie les requêtes dans l’ordre suivant :
- Cookie de session : lit et déchiffre le cookie de session chiffré. Si la session est valide et n’a pas expiré, l’utilisateur est authentifié.
- Solution de repli JWT : si aucun cookie de session n’est présent, vérifie le jeton de l’en-tête
Authorizationauprès de l’endpoint JWKS d’Okta.
Après l’authentification, authorizeUser vérifie que l’utilisateur possède un oktaId valide. Fournissez une fonction authorizeUser personnalisée pour implémenter une logique supplémentaire.
Type OktaUserLien direct vers oktauser-type
Le type OktaUser étend l’interface de base EEUser avec des champs propres à Okta :
id:
sub).oktaId:
id).email?:
name?:
avatarUrl?:
groups?:
groups.Classe MastraRBACOktaLien direct vers Classe MastraRBACOkta
La classe MastraRBACOkta associe les groupes Okta aux autorisations Mastra. Elle récupère les groupes d’utilisateurs depuis l’API Okta et les résout par rapport à une association de rôles configurable. Utilisez-la avec MastraAuthOkta ou tout autre Provider d’authentification.
RBAC requiert une licence Enterprise Edition valide. Il fonctionne sans licence en développement afin que vous puissiez l’essayer localement, mais vous aurez besoin d’une licence en production. Contactez l’équipe commerciale pour plus d’informations.
Exemple d’utilisationLien direct vers Exemple d’utilisation
Utilisez MastraRBACOkta avec un Provider d’authentification en le transmettant à l’option rbac :
import { Mastra } from '@mastra/core'
import { MastraAuthOkta, MastraRBACOkta } from '@mastra/auth-okta'
export const mastra = new Mastra({
server: {
auth: new MastraAuthOkta(),
rbac: new MastraRBACOkta({
roleMapping: {
Admin: ['*'],
Engineering: ['agents:*', 'workflows:*', 'tools:*'],
Viewer: ['agents:read', 'workflows:read'],
_default: [],
},
}),
},
})
Pour utiliser Okta RBAC avec un autre Provider d’authentification, transmettez une fonction getUserId afin de résoudre l’ID utilisateur Okta à partir de l’objet utilisateur de l’autre Provider :
import { MastraAuthAuth0 } from '@mastra/auth-auth0'
import { MastraRBACOkta } from '@mastra/auth-okta'
export const mastra = new Mastra({
server: {
auth: new MastraAuthAuth0(),
rbac: new MastraRBACOkta({
getUserId: user => user.metadata?.oktaUserId || user.email,
roleMapping: {
Engineering: ['agents:*', 'workflows:*'],
Admin: ['*'],
_default: [],
},
}),
},
})
Paramètres du constructeurLien direct vers Paramètres du constructeur
roleMapping:
'_default' pour attribuer des autorisations aux utilisateurs qui ne correspondent à aucun groupe. Prend en charge les caractères génériques tels que '*' (accès complet) et 'agents:*' (toutes les actions d’Agent).domain?:
apiToken?:
getUserId?:
oktaId ou id de l’objet utilisateur.