Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de simulatorverificatieprovider kunt u lokaal machtigingen op basis van rollen testen zonder een id-provider te configureren. Gebruik deze tijdens de ontwikkeling om te controleren of uw machtigingsregels correct werken voordat u implementeert in productie.
Een lokale verificatieprovider kiezen
Tijdens de ontwikkeling kunt u verificatie en autorisatie testen zonder een productie-id-provider te configureren.
| Provider | Ideaal voor | Opmerkingen |
|---|---|---|
| Simulator | Snelle machtigingen testen | Alleen ontwikkeling. Behandelt elke aanvraag als geverifieerd. Standaard ingesteld op Authenticated rol; overschrijven met X-MS-API-ROLE. |
| AppService | Claimgestuurd testen | Simuleer EasyAuth lokaal door te verzenden X-MS-CLIENT-PRINCIPAL met aangepaste claims. Zie App Service-verificatie configureren voor meer informatie. |
Authenticatiestroom
De simulatorprovider behandelt alle aanvragen als geverifieerd, zodat u zich kunt richten op het testen van autorisatieregels:
| Phase | Wat gebeurt er? |
|---|---|
| Aanvraag komt binnen | Ontwikkelaar verzendt een HTTP-aanvraag naar DAB |
| Roltoewijzing | DAB wijst Authenticated (standaard) of de rol uit de X-MS-API-ROLE-koptekst toe |
| Machtigingscontrole | DAB evalueert de aanvraag op basis van de machtigingen van de entiteit voor die rol |
| Query-uitvoering | Indien toegestaan, voert DAB query's uit op de database en retourneert ze resultaten |
Belangrijk
De simulatorprovider is alleen bedoeld voor ontwikkeling. Gebruik het nooit in productie- het slaat alle echte verificatie over.
Vereiste voorwaarden
- Data API Builder CLI geïnstalleerd (installatiehandleiding)
- Een bestaande
dab-config.jsonmet ten minste één entiteit
Snelzoekgids
| Configuratie | Waarde |
|---|---|
| Provider | Simulator |
| Hostmodus |
development (vereist) |
| Standaardrol |
Authenticated (automatisch geïnjecteerd) |
| Koptekst voor het overschrijven van rollen | X-MS-API-ROLE |
| Token vereist | Nee. |
| Ondersteuning voor claims | Beperkt (alleen systeemrollen Anonymous/Authenticated ; geen willekeurige claims) |
Stap 1: De simulatorprovider configureren
Stel de verificatieprovider in op Simulator en zorg ervoor dat de ontwikkelingsmodus is ingeschakeld.
CLI (Command Line Interface)
# Enable development mode
dab configure \
--runtime.host.mode development
# Set the Simulator provider
dab configure \
--runtime.host.authentication.provider Simulator
Resulterende configuratie
{
"runtime": {
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
}
}
Opmerking
De Simulator-provider werkt alleen als mode is ingesteld op development. In de productiemodus weigert DAB de simulatorprovider en start niet.
Stap 2: Entiteitsmachtigingen configureren
Definieer machtigingen voor de rollen die u wilt testen. U kunt systeemrollen (Anonymous, Authenticated) en aangepaste rollen testen.
Voorbeeld: Meerdere rollen
# 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:*"
Resulterende configuratie
{
"entities": {
"Book": {
"source": "dbo.Books",
"permissions": [
{
"role": "Anonymous",
"actions": ["read"]
},
{
"role": "Authenticated",
"actions": ["read"]
},
{
"role": "author",
"actions": ["create", "read", "update"]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}
Stap 3: Verschillende rollen testen
Start Data API Builder en verzend aanvragen om elke rol te testen.
dab start
Testen als geverifieerd (standaard)
Zonder speciale headers worden aanvragen geëvalueerd als de Authenticated rol:
curl -X GET "http://localhost:5000/api/Book"
Testen als anoniem
Gebruik de X-MS-API-ROLE header om te testen als Anonymous:
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: Anonymous"
Testen als een aangepaste rol
Gebruik de X-MS-API-ROLE header om een aangepaste rol te testen:
curl -X GET "http://localhost:5000/api/Book" \
-H "X-MS-API-ROLE: author"
Opmerking
Met Simulator werkt het testen van aangepaste rollen omdat DAB machtigingen evalueert op basis van de X-MS-API-ROLE headerwaarde. Systeemrollen (Anonymous, Authenticated) zijn altijd beschikbaar. Als een aangepaste rolaanvraag 403 retourneert, controleert u of de rolnaam exact overeenkomt met uw entiteitsmachtigingen.
Een actie testen die moet worden geweigerd
Probeer een actie waarvoor de rol geen machtiging heeft:
# 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"}'
Verwachte reactie: 403 Forbidden
Scenario's testen
Gebruik de simulator om deze veelvoorkomende scenario's te testen:
| Scenario | Testen |
|---|---|
| Anonieme toegang | Stel X-MS-API-ROLE: Anonymous in |
| Geverifieerde toegang | Kopteksten weglaten (standaard) of instellen op X-MS-API-ROLE: Authenticated |
| Aangepaste roltoegang | Stel X-MS-API-ROLE: <role-name> in |
| Actie geweigerd | Een actie aanvragen waarvoor de rol geen machtiging heeft |
| Veldbeperkingen | Machtigingen op veldniveau configureren en antwoordvelden verifiëren |
| Ontbrekende rol | Instellen X-MS-API-ROLE: nonexistent om foutafhandeling te testen |
Beperkingen
De simulatorprovider heeft deze beperkingen:
| Beperking | Tijdelijke maatregel |
|---|---|
| Geen aangepaste claims | De AppService-provider gebruiken met X-MS-CLIENT-PRINCIPAL header |
| Geen databasebeleid met claims | Beleid testen met behulp van de AppService-provider |
| Geen tokenvalidatie | Overschakelen naar de Entra of naar de Custom Provider voor productie |
| Alleen ontwikkelmodus | Een echte provider gebruiken in productie |
Aanbeveling
Als u databasebeleid wilt testen dat claims gebruikt (zoals @claims.userId), gebruikt u in plaats daarvan de AppService-provider . Hiermee kunt u aangepaste claims opgeven via de X-MS-CLIENT-PRINCIPAL header.
Overgang naar productie
Wanneer u klaar bent om te implementeren, vervangt u de Simulator-provider door een productieprovider:
- Wijzigen
modevandevelopmentinproduction - Verander
providervanSimulatornaar uw gekozen provider (EntraID/AzureAD, ofAppService, ofCustom) - De vereiste JWT-instellingen configureren (doelgroep, verlener)
{
"runtime": {
"host": {
"mode": "production",
"authentication": {
"provider": "EntraID",
"jwt": {
"audience": "api://<your-app-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
}
Volledig configuratievoorbeeld
{
"$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": ["*"]
}
]
}
}
}