Delen via


Lokale verificatie in Data API Builder

Wanneer u een oplossing ontwikkelt met behulp van Data API Builder lokaal, of wanneer u Data API Builder on-premises uitvoert, moet u de geconfigureerde verificatie- en autorisatieopties testen door een aanvraag met een specifieke rol of claim te simuleren.

Als u een geverifieerde aanvraag wilt simuleren zonder een verificatieprovider te configureren (bijvoorbeeld Microsoft Entra ID), kunt u de Simulator verificatieproviders of StaticWebApps gebruiken:

Simulator De provider gebruiken

Simulator is een configureerbare verificatieprovider die de engine van de Data API builder instrueert om alle aanvragen als geverifieerd te behandelen.

  • Ten minste worden alle aanvragen geëvalueerd in de context van de systeemrol Authenticated.
  • Indien gewenst wordt de aanvraag geëvalueerd in de context van een rol die wordt aangegeven in de X-MS-API-ROLE HTTP-header.

Notitie

Hoewel de gewenste rol wordt gehonoreerd, werken autorisatiemachtigingen die databasebeleid definiëren niet omdat er geen aangepaste claims kunnen worden ingesteld voor de geverifieerde gebruiker bij de Simulator provider. Ga door naar de sectie De provider gebruiken voor het StaticWebApps testen van databaseautorisatiebeleid.

1. De verificatieprovider voor runtimeconfiguratie bijwerken

Zorg ervoor dat in het configuratiebestand de Simulator verificatieprovider en development modus is opgegeven. Raadpleeg deze voorbeeldconfiguratiesectie host :

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

2. Geef de rolcontext van de aanvraag op

Met Simulator als verificatieprovider van Data API Builder is er geen aangepaste header nodig om de rolcontext in te stellen op de systeemrol Authenticated:

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

Als u de rolcontext wilt instellen op een andere rol, inclusief de systeemrol Anonymous, moet de X-MS-API-ROLE header worden opgenomen in de gewenste rol:

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

StaticWebApps De provider gebruiken

De StaticWebApps verificatieprovider geeft Data API Builder de opdracht om te zoeken naar een set HTTP-headers die alleen aanwezig zijn wanneer ze worden uitgevoerd binnen een Static Web Apps omgeving. De client stelt deze HTTP-headers in wanneer deze lokaal worden uitgevoerd om een geverifieerde gebruiker te simuleren, inclusief eventuele rollidmaatschappen of aangepaste claims.

Notitie

Door de client opgegeven exemplaren van de HTTP-header, X-MS-CLIENT-PRINCIPAL, werken alleen bij het lokaal ontwikkelen, omdat bij productie Azure Static Web Apps omgevingen alle door de client geleverde exemplaren van die header worden verwijderd.

Zorg ervoor dat u in het configuratiebestand de StaticWebApps verificatieprovider gebruikt. Raadpleeg deze voorbeeldconfiguratiesectie host :

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

1. Aanvragen verzenden met een gegenereerde X-MS-CLIENT-PRINCIPAL header

Zodra Data API Builder lokaal wordt uitgevoerd en is geconfigureerd voor het gebruik van de StaticWebApps verificatieprovider, kunt u handmatig een client-principal-object genereren met behulp van de volgende sjabloon:

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

De geverifieerde gebruikersmetagegevens van de statische web-app hebben de volgende eigenschappen:

Eigenschap Beschrijving
identityProvider Een willekeurige tekenreekswaarde.
userId Een unieke id voor de gebruiker.
userDetails Gebruikersnaam of e-mailadres van de gebruiker.
userRoles Een matrix van de toegewezen rollen van de gebruiker.

Notitie

Zoals vermeld in Static Web Apps documentatie, bevat claims de X-MS-CLIENT-PRINCIPAL header geen matrix.

Als u wilt worden doorgegeven met de X-MS-CLIENT-PRINCIPAL header, moet de JSON-nettolading base64-gecodeerd zijn. U kunt elk online- of offlineprogramma gebruiken om dit te doen. Een dergelijk hulpprogramma is DevToys. Een voorbeeld van een met Base64 gecodeerde nettolading die de JSON vertegenwoordigt waarnaar eerder is verwezen:

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

Met de volgende cURL-aanvraag wordt een geverifieerde gebruiker gesimuleerd die de lijst met beschikbare Book entiteitsrecords opvraagt in de context van de author rol:

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