Dela via


Lokal autentisering i Data API Builder

När du utvecklar en lösning med hjälp av Data API Builder lokalt, eller när du kör Data API Builder lokalt, måste du testa de konfigurerade autentiserings- och auktoriseringsalternativen genom att simulera en begäran med en specifik roll eller ett visst anspråk.

Om du vill simulera en autentiserad begäran utan att konfigurera en autentiseringstjänst (till exempel Microsoft Entra ID) kan du använda antingen Simulator eller StaticWebApps autentiseringsleverantörer:

Använda providern Simulator

Simulator är en konfigurerbar autentiseringsprovider som instruerar Data API Builder-motorn att behandla alla begäranden som autentiserade.

  • Som minst utvärderas alla begäranden i kontexten för systemrollen Authenticated.
  • Om du vill utvärderas begäran i kontexten av någon roll som anges i X-MS-API-ROLE Http-huvudet.

Anmärkning

Även om den önskade rollen kommer att respekteras fungerar inte auktoriseringsbehörigheter som definierar databasprinciper eftersom anpassade anspråk inte kan anges för den autentiserade användaren med providern Simulator . Fortsätt till avsnittet Använd providern StaticWebApps för att testa principer för databasauktorisering.

1. Uppdatera autentiseringsprovidern för körningskonfiguration

Kontrollera att du i konfigurationsfilen använder autentiseringsprovidern Simulator och att läget development är angivet. Se det här exempelkonfigurationsavsnittet host :

"host": {
  "mode": "development",
  "authentication": {
    "provider": "Simulator"
  }
}

2. Ange rollkontexten för begäran

Med Simulator som autentiseringsprovider för Data API Builder krävs ingen anpassad rubrik för att ange rollkontexten till systemrollen Authenticated:

curl --request GET \
  --url http://localhost:5000/api/books \

Om du vill ange rollkontexten till en annan roll, inklusive systemrollen Anonymous, måste X-MS-API-ROLE-huvudet inkluderas med den önskade rollen:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \

Använd StaticWebApps-leverantören

StaticWebApps Autentiseringsprovidern instruerar Data API-byggare att söka efter en uppsättning HTTP-huvuden som endast finns när de körs i en Static Web Apps-miljö. Klienten anger dessa HTTP-huvuden när de körs lokalt för att simulera en autentiserad användare, inklusive rollmedlemskap eller anpassade anspråk.

Anmärkning

Av klienten angivna instanser av HTTP-rubriken X-MS-CLIENT-PRINCIPAL fungerar bara när du utvecklar lokalt eftersom produktionsmiljöer för Azure Static Web Apps tapper alla instanser av rubriken som tillhandahålls av klienten.

Kontrollera att du använder autentiseringsprovidern StaticWebApps i konfigurationsfilen. Se det här exempelkonfigurationsavsnittet host :

"host": {
  "mode": "development",
  "authentication": {
    "provider": "StaticWebApps"
  }
}

1. Skicka begäranden med ett genererat X-MS-CLIENT-PRINCIPAL huvud

När Data API Builder körs lokalt och konfigurerats för att använda StaticWebApps autentiseringsprovidern kan du generera ett klientobjekt manuellt med hjälp av följande mall:

{  
  "identityProvider": "test",
  "userId": "12345",
  "userDetails": "john@contoso.com",
  "userRoles": ["author", "editor"]
}

Static Web Apps autentiserade användarmetadata har följande egenskaper:

Fastighet Beskrivning
identityProvider Valfritt strängvärde.
Användar-ID En unik identifierare för användaren.
användaruppgifter Användarens användarnamn eller e-postadress.
användarroller En matris med användarens tilldelade roller.

Anmärkning

Som anges i dokumentationen X-MS-CLIENT-PRINCIPAL för Static Web Apps innehåller rubriken inte matrisenclaims.

För att kunna skickas med X-MS-CLIENT-PRINCIPAL headern måste JSON-nyttolasten vara Base64-kodad. Du kan använda valfritt online- eller offlineverktyg för att göra det. Ett sådant verktyg är DevToys. En Base64-kodad nyttolast som representerar den tidigare nämnda JSON.

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

Följande cURL-begäran simulerar en autentiserad användare som hämtar listan över tillgängliga Book entitetsposter i rollens author kontext:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \
  --header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'