Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le fournisseur d’authentification du simulateur vous permet de tester les autorisations basées sur des rôles localement sans configurer un fournisseur d’identité. Utilisez-le pendant le développement pour vérifier que vos règles d’autorisation fonctionnent correctement avant le déploiement en production.
Choisir un fournisseur d’authentification local
Pendant le développement, vous pouvez tester l’authentification et l’autorisation sans configurer un fournisseur d’identité de production.
| Provider | Idéal pour | Remarques |
|---|---|---|
| Simulateur | Test d’autorisation rapide | Développement uniquement. Traite chaque demande comme authentifiée. Par défaut, utilise le rôle Authenticated; peut être remplacé par X-MS-API-ROLE. |
| AppService | Tests pilotés par les exigences | Simuler EasyAuth localement en envoyant X-MS-CLIENT-PRINCIPAL avec des revendications personnalisées. Pour plus d’informations, consultez Configurer l’authentification App Service. |
Flux d’authentification
Le fournisseur de simulateur traite toutes les demandes comme authentifiées, ce qui vous permet de vous concentrer sur le test des règles d’autorisation :
| Phase | Que se passe-t-il ? |
|---|---|
| La demande arrive | Le développeur envoie une requête HTTP à DAB |
| Attribution de rôle | DAB affecte le rôle par défaut Authenticated ou celui provenant de l'en-tête X-MS-API-ROLE. |
| Vérification de l’autorisation | DAB évalue la demande par rapport aux autorisations de l’entité pour ce rôle |
| Exécution des requêtes | Si elle est autorisée, DAB interroge la base de données et retourne les résultats |
Important
Le fournisseur de simulateurs est destiné au développement uniquement. Ne l’utilisez jamais en production, elle contourne toute authentification réelle.
Prerequisites
- Interface CLI du générateur d’API de données installée (guide d’installation)
- Un existant
dab-config.jsonavec au moins une entité
Référence rapide
| Réglage | Valeur |
|---|---|
| Provider | Simulator |
| Mode hôte |
development (requis) |
| Rôle par défaut |
Authenticated (injecté automatiquement) |
| En-tête de remplacement du rôle | X-MS-API-ROLE |
| Jeton requis | Non |
| Prise en charge des revendications | Limité (rôles système Anonymous/Authenticated uniquement ; aucune revendication arbitraire) |
Étape 1 : Configurer le fournisseur de simulateurs
Définissez le fournisseur d’authentification sur Simulateur et vérifiez que le mode de développement est activé.
Interface de ligne de commande (CLI)
# Enable development mode
dab configure \
--runtime.host.mode development
# Set the Simulator provider
dab configure \
--runtime.host.authentication.provider Simulator
Configuration résultante
{
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
}
}
Note
Le fournisseur de simulateur fonctionne uniquement lorsque mode est paramétré sur development. En mode de production, DAB rejette le fournisseur du simulateur et ne parvient pas à démarrer.
Étape 2 : Configurer les autorisations d’entité
Définissez les autorisations pour les rôles que vous souhaitez tester. Vous pouvez tester les rôles système (Anonymous, Authenticated) et les rôles personnalisés.
Exemple : Plusieurs rôles
# Allow anonymous read access
dab update Book \
--permissions "Anonymous:read"
# Allow authenticated users full read access
dab update Book \
--permissions "Authenticated:read"
# Allow authors to create and update
dab update Book \
--permissions "author:create,read,update"
# Allow admins full access
dab update Book \
--permissions "admin:*"
Configuration résultante
{
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}
Étape 3 : Tester différents rôles
Démarrez le générateur d’API de données et envoyez des demandes pour tester chaque rôle.
dab start
Tester comme authentifié (par défaut)
Sans en-têtes spéciaux, les requêtes sont évaluées en tant que rôle Authenticated :
curl -X GET "http://localhost:5000/api/Book"
Tester en tant qu'anonyme
Utilisez l’en-tête X-MS-API-ROLE pour tester comme Anonymous.
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous"
Tester en tant que rôle personnalisé
Utilisez l’en-tête X-MS-API-ROLE pour tester n’importe quel rôle personnalisé :
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: author"
Note
Avec Simulator, les tests de rôle personnalisés fonctionnent, car DAB évalue les autorisations en fonction de la valeur d’en-tête X-MS-API-ROLE . Les rôles système (Anonymous, Authenticated) sont toujours disponibles. Si une demande de rôle personnalisée retourne 403, vérifiez que le nom du rôle correspond exactement à vos autorisations d’entité.
Tester une action qui doit être refusée
Essayez une action pour laquelle le rôle n’est pas autorisé :
# This should fail—Anonymous can only read
curl -X POST "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous" \
-H "Content-Type: application/json" \
-d '{"title": "New Book", "author": "Test"}'
Réponse attendue : 403 Forbidden
Scénarios de test
Utilisez le simulateur pour tester ces scénarios courants :
| Scénario | Procédure de test |
|---|---|
| Accès anonyme | Définissez X-MS-API-ROLE: Anonymous |
| Accès authentifié | Omettre les en-têtes (par défaut) ou définir X-MS-API-ROLE: Authenticated |
| Accès aux rôles personnalisés | Définissez X-MS-API-ROLE: <role-name> |
| Action refusée | Demander une action pour laquelle le rôle manque de permission |
| Restrictions de champ | Configurer les autorisations au niveau du champ et vérifier les champs de réponse |
| Rôle manquant | Définir X-MS-API-ROLE: nonexistent pour tester la gestion des erreurs |
Limites
Le fournisseur de simulateur présente les limitations suivantes :
| Limitation | Contournement |
|---|---|
| Aucune revendication personnalisée | Utiliser le fournisseur AppService avec l'en-tête X-MS-CLIENT-PRINCIPAL |
| Aucune stratégie de base de données avec revendications | Tester des stratégies à l’aide du fournisseur AppService |
| Aucune validation de jeton | Passer à un fournisseur Entra ou personnalisé pour la production |
| Mode de développement uniquement | Utiliser un fournisseur réel en production |
Conseil / Astuce
Si vous devez tester des stratégies de base de données qui utilisent des revendications (comme @claims.userId), utilisez plutôt le fournisseur AppService . Il vous permet de fournir des revendications personnalisées via l’en-tête X-MS-CLIENT-PRINCIPAL .
Transition vers la production
Lorsque vous êtes prêt à déployer, remplacez le fournisseur De simulateur par un fournisseur de production :
- Passer
modededevelopmentàproduction - Passez
providerdeSimulatorà votre fournisseur choisi (EntraID/AzureAD,AppServiceouCustom) - Configurer les paramètres JWT requis (audience, émetteur)
{
"runtime": {
"host": {
"mode": "production",
"authentication": {
"provider": "EntraID",
"jwt": {
"audience": "api://<your-app-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
}
Exemple de configuration complet
{
"$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "Server=localhost;Database=Library;Trusted_Connection=true;TrustServerCertificate=true;"
},
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
},
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}