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 Simulator begäran utan att konfigurera en autentiseringsprovider (till exempel Microsoft Entra ID) kan du använda antingen eller StaticWebApps autentiseringsprovidrar:

Använda providern Simulator

Simulator är en konfigurerbar autentiseringsprovider som instruerar data-API-buildermotorn att behandla alla begäranden som autentiserade.

  • Minst utvärderas alla begäranden i kontexten för systemrollen Authenticated.
  • Om så önskas utvärderas begäran i kontexten för alla roller som anges i X-MS-API-ROLE Http-huvudet.

Anteckning

Ä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 runtime-konfigurationsautentiseringsprovidern

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

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

2. Ange rollkontexten för begäran

Med Simulator som data-API-byggares autentiseringsprovider krävs inget anpassat huvud för att ange rollkontexten till systemrollen Authenticated:

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

Om du vill ange rollkontexten till någon annan roll, inklusive systemrollenAnonymousX-MS-API-ROLE, måste huvudet inkluderas med önskad roll:

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

Använda providern StaticWebApps

StaticWebApps Autentiseringsprovidern instruerar Data API-byggare att leta efter en uppsättning HTTP-huvuden som bara 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.

Anteckning

Klienten tillhandahöll instanser av Http-huvudet, X-MS-CLIENT-PRINCIPAL, fungerar bara när du utvecklar lokalt eftersom produktion Azure Static Web Apps miljöer släpper alla klientinstanser som tillhandahålls av det huvudet.

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 som ger 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:

Egenskap Beskrivning
identityProvider Valfritt strängvärde.
userId En unik identifierare för användaren.
userDetails Användarens användarnamn eller e-postadress.
userRoles En matris med användarens tilldelade roller.

Anteckning

Som anges i Static Web Apps dokumentationenX-MS-CLIENT-PRINCIPAL innehåller rubriken inte matrisenclaims.

För att kunna skickas med X-MS-CLIENT-PRINCIPAL huvudet 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 exempelnyttolast som representerar JSON som tidigare refererats till:

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'