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 systemrollenAnonymous
X-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'