- Outils publics - Accessibles à tous les utilisateurs authentifiés, sans autorisation supplémentaire
- Accès basé sur les rôles - Outils attribués à des rôles précis (
admin,content_editor) - Appartenance à un groupe - Les utilisateurs héritent des autorisations de leurs groupes (gestionnaires, marketing)
- Accès temporaire - Accès aux outils limité dans le temps, avec expiration automatique
- Autorisations propres aux ressources - Contrôle à granularité fine des fonctionnalités des outils (p. ex., consultation de documents privés)
- Authentifie les utilisateurs avec Auth0 OAuth 2.0
- Utilise Auth0 FGA pour déterminer à quels outils chaque utilisateur peut accéder
- Filtre dynamiquement la liste des outils en fonction des autorisations de l’utilisateur
- Prend en charge des accès temporaires qui expirent automatiquement
- Fournit des données différentes selon le rôle de l’utilisateur (documents publics ou privés)
Prerequisites
1. Create or log in to your Auth0 account
1. Create or log in to your Auth0 account
3. Install the Auth0 CLI
3. Install the Auth0 CLI
- Follow the Auth0 CLI installation instructions.
- Log in to your account with the Auth0 CLI:
4. Install jq
4. Install jq
- macOS
- Linux
- Windows
1. Installer l'interface de ligne de commande FGA
1. Installer l'interface de ligne de commande FGA
- Install the FGA CLI:
- macOS
- Linux
- Windows
- Verify the installation:
2. Configurer Auth0 FGA ou OpenFGA
2. Configurer Auth0 FGA ou OpenFGA
- Auth0 FGA: Fully managed service at fga.dev. Best for production use.
- OpenFGA: Self-hosted open-source option. Best for local development and testing.
fga/model.fga) and initial permission tuples (fga/tuples.yaml) that will be imported using the FGA CLI.Configurer les paramètres du locataire
1. Promote the connection to a domain-level connection
1. Promote the connection to a domain-level connection
List Your Connection
Choose Your Connections
- For the username-and-password database, look for the connection with the strategy
auth0. - For the Google social connection, look for the connection with the strategy
google-oauth2.
Upgrade the Connection to Domain-Level
YOUR_CONNECTION_ID with the actual ID (e.g., con_XXXXXXXXXXXXXXXX).Créer une API pour représenter votre serveur MCP
An MCP server is treated just like any other API in your Auth0 tenant, which means you can use the same access control, scoping, and authorization features. The API (also known as a Resource Server) represents your protected MCP Server. Run the following command to create an API in Auth0:rfc9068_profile_authz is used as the token dialect to include the permissions claim in the access token, which can be useful for the API to check user permissions without making additional calls.
For more details on protecting APIs with Auth0, check our quickstarts.
tool:greet et tool:whoami. L’outil get_datetime est public et ne nécessite aucune permission, tandis que get_documents utilise FGA pour gérer l’autorisation.Configurer votre magasin FGA
- Auth0 FGA
- OpenFGA (Local)
Create an Auth0 FGA account
Create a store
Generate API credentials
- Navigate to Settings in your store.
- In the Authorized Clients section, click + Create Client.
- Give your client a name and select the following permissions:
- Read/Write model, changes, and assertions - To query authorization decisions
- Write and delete tuples - To import tuples (user permissions)
- Read and query - To import the authorization model
- Click Create.
- Save the credentials shown in the confirmation modal.
Configure environment variables
FGA_API_URL may vary based on your region (e.g., api.eu1.fga.dev for Europe).Application d’exemple
Commencez par télécharger ou cloner l’application d’exemple de ce Démarrage rapide. Cet exemple comprend un serveur MCP FastMCP intégrant Auth0 OAuth et Auth0 FGA en JavaScript/TypeScript.- Utiliser l'application d'exemple (recommandé)
- Cloner le dépôt GitHub
Installer les paquets
Installez les dépendances nécessaires :Créer votre fichier d’environnement
From the root of your sample app directory, run the following command to create a new.env file with your Auth0 configuration:
.env file. The variables you need depend on which FGA provider you’re using:
- Auth0 FGA
- OpenFGA (Local)
.env file using the credentials from your Auth0 FGA store:YOUR_STORE_IDwith your store ID from the Auth0 FGA dashboardYOUR_CLIENT_IDwith your client IDYOUR_CLIENT_SECRETwith your client secret- Update
FGA_API_URLif your store is in a different region (e.g.,https://api.eu1.fga.devfor Europe)
.env file should look like this:
- Auth0 FGA
- OpenFGA (Local)
Comprendre le modèle d’autorisation
The authorization model in this sample demonstrates how Auth0 FGA provides fine-grained access control using Relationship-Based Access Control (ReBAC).Authorization Model Structure
The complete model is defined infga/model.fga:
1. Public Tools
1. Public Tools
user:* means any authenticated user can use the get_datetime tool.2. Role-Based Access
2. Role-Based Access
admin role automatically gain access to these tools.3. Group Membership
3. Group Membership
managers group, they automatically inherit all permissions of the admin role, including access to all tools.4. Temporal Access
4. Temporal Access
5. Resource-Specific Permissions
5. Resource-Specific Permissions
get_documents tool checks this permission separately to determine whether to return private documents. This allows the same tool to provide different data based on user permissions.Example:- Admin role: Sees all documents (public + private)
- Content editor role: Sees only public documents
How Authorization Works
When a user connects to the MCP server:- The server authenticates the user with Auth0 (validates JWT token)
- The server queries FGA to get all tools the user can access:
- Checks
can_userelation for each tool - Evaluates group memberships, role assignments, and temporal conditions
- Checks
- The server returns only authorized tools to the MCP client
- When the user calls a tool like
get_documents, the server checkscan_view_private_documentsto determine what data to return
Importer le modèle d’autorisation et les tuples
L’exemple comprend un modèle d’autorisation complet et des tuples d’autorisation initiaux qui définissent :- L’accès public à
get_datetimepour tous les utilisateurs - Les attributions de rôles (
admin,content_editor) - Les mappages de groupes vers des rôles (
managers→admin,marketing→content_editor) - Les autorisations d’accès aux outils pour chaque rôle
Examiner le modèle d’autorisation
fga/model.fga. Il comprend des types pour les utilisateurs, les groupes, les rôles et les outils, ainsi qu’une condition d’accès temporelle.Les tuples initiaux sont définis dans fga/tuples.yaml et établissent les autorisations de base.Importer le modèle et les tuples
- Créer un nouveau magasin FGA (si vous utilisez OpenFGA localement)
- Téléverser le modèle d’autorisation à partir de
fga/model.fga - Importer les tuples initiaux à partir de
fga/tuples.yaml - Exécuter les tests définis dans
fga/store.fga.yamlpour vérifier la configuration
.env en tant que FGA_STORE_ID. Si vous utilisez Auth0 FGA avec un magasin existant, la commande mettra à jour votre magasin avec le nouveau modèle et les nouveaux tuples.Vérifier l’importation
Exécuter le serveur MCP
Démarrez le serveur MCP :.env). La console devrait afficher des messages indiquant que :
- le serveur a bien démarré;
- le client FGA a été initialisé;
- le serveur est à l’écoute des connexions à l’adresse
http://localhost:3001/mcp.
Gérer les autorisations des utilisateurs
The sample application includes helper scripts in thefga/ directory to make permission management easier. These scripts use the FGA CLI to add or remove authorization tuples dynamically.
Available Scripts
Add User to Group
Add User to Group
managers- Assigned toadminrole (all tools + private documents)marketing- Assigned tocontent_editorrole (all tools, public documents only)
Remove User from Group
Remove User from Group
Grant Temporal Access
Grant Temporal Access
s for seconds, m for minutes, h for hours).Available tools: greet, whoami, get_documentsget_datetime don’t need temporal access grants since they’re already accessible to all authenticated users.Reset Tuples
Reset Tuples
fga/tuples.yaml.Usage:fga/tuples.yaml. Useful for returning to a clean state during testing.Testing Permission Changes
After running any of these scripts, you need to reload the tools:- for MCP inspector: click ‘Clear’ in the MCP inspector tools panel and then ‘List Tools’
- for other MCP clients: you might need to reconnect the MCP Client to see the updated tool list.
Testing your MCP server
Now that your MCP server is up and running, you can test it by using tools like MCP Inspector.Learn how to test your Auth0-powered MCP server
Tester les scénarios d’autorisation
Testez maintenant différents scénarios d’autorisation pour voir comment FGA contrôle l’accès aux outils. Vous devrez utiliser un client MCP comme MCP Inspector pour vous connecter à votre serveur.Tester l’accès de base
get_datetimeOn constate ainsi que, sans attribution de rôle ni de groupe, les utilisateurs authentifiés n’ont accès qu’aux outils publics.Accorder l’accès administrateur au moyen du groupe managers
YOUR_EMAIL par l’adresse courriel que vous utilisez pour vous authentifier.Reconnectez-vous dans votre client MCP et vérifiez que tous les outils s’affichent maintenant.Outils attendus : get_datetime, greet, whoami, get_documentsAppelez l’outil get_documents et vérifiez que la réponse contient à la fois les documents publics et privés. On voit ainsi des autorisations propres aux ressources, fondées sur le rôle administrateur.Tester le rôle d’éditeur de contenu
get_datetime, greet, whoami, get_documentsAppelez l’outil get_documents et vérifiez que seuls les documents publics s’affichent désormais (aucun document privé). On voit ainsi comment un même outil peut fournir des données différentes selon le rôle de l’utilisateur.Différence clé : les éditeurs de contenu ont accès aux mêmes outils que les administrateurs, mais ne disposent pas de l’autorisation can_view_private_documents.Tester l’accès temporaire
greet.Reconnectez-vous immédiatement dans votre client MCP.Outils attendus : get_datetime, greetAppelez l’outil greet pour vérifier qu’il fonctionne.Attendez 25 secondes, puis reconnectez-vous.Outils attendus : get_datetime (seulement)L’outil greet ne devrait plus apparaître. On constate ainsi que l’accès temporaire expire automatiquement, sans aucun nettoyage nécessaire.Prochaines étapes
- Découvrez l’approche plus simple fondée sur les permissions dans Autorisation pour votre serveur MCP
- Consultez la documentation d’Auth0 FGA pour en savoir plus sur la conception de modèles d’autorisation
- Lisez la documentation d’OpenFGA pour découvrir des schémas de modélisation avancés et des pratiques exemplaires
- Apprenez à tester votre serveur MCP avec MCP Inspector