Delen via


Simulatorverificatie configureren voor lokaal testen

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:

Afbeelding van de simulatorverificatiestroom die laat zien hoe aanvragen automatisch worden behandeld als geverifieerd.

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.json met 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:

  1. Wijzigen mode van development in production
  2. Verander provider van Simulator naar uw gekozen provider (EntraID/AzureAD, of AppService, of Custom)
  3. 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": ["*"]
        }
      ]
    }
  }
}