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'