Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 (zoals Microsoft Entra-id, bijvoorbeeld), kunt u de Simulator verificatieproviders gebruiken:
1. Gebruik de Simulator provider
Simulator is een configureerbare authenticatieprovider die de Data API-builder engine instrueert om alle aanvragen als geauthenticeerd te behandelen.
- Alle aanvragen worden minimaal geëvalueerd in de context van de systeemrol
Authenticated. - Indien gewenst wordt de aanvraag geëvalueerd in de context van een rol die wordt aangeduid in de
X-MS-API-ROLEHttp-header.
Opmerking
Hoewel aan de gewenste rol wordt voldaan, werken autorisatiemachtigingen die databasebeleid definiëren niet omdat aangepaste claims niet kunnen worden ingesteld voor de geverifieerde gebruiker bij de Simulator provider.
De verificatieprovider van runtime-configuratie bijwerken
Zorg ervoor dat in het configuratiebestand dat u gebruikt de Simulator verificatieprovider en development modus is opgegeven. Raadpleeg deze voorbeeldconfiguratiesectie host :
"host": {
"mode": "development",
"authentication": {
"provider": "Simulator"
}
}
De rolcontext van de aanvraag opgeven
Wanneer Simulator de verificatieprovider is voor 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' \
2. Gebruik de AppService provider
De AppService verificatieprovider geeft data-API-opbouwfunctie opdracht om te zoeken naar een set HTTP-headers die alleen aanwezig zijn wanneer deze worden uitgevoerd in een Azure Container Apps-omgeving. De client stelt deze HTTP-headers in wanneer het lokaal draait om een geverifieerd gebruiker te simuleren, inclusief roltoewijzing en aangepaste claims.
"host": {
"mode": "development",
"authentication": {
"provider": "AppService"
}
}
Aanvragen verzenden die een gegenereerde X-MS-CLIENT-PRINCIPAL header bieden
Zodra Data API Builder lokaal wordt uitgevoerd en is geconfigureerd voor het gebruik van de AppService verificatieprovider, kunt u handmatig een client-principalobject genereren met behulp van de volgende sjabloon:
{
"identityProvider": "test",
"userId": "12345",
"userDetails": "john@contoso.com",
"userRoles": ["author", "editor"]
}
App Service heeft de volgende eigenschappen:
| Vastgoed | Beschrijving |
|---|---|
| identiteitsprovider | Elke tekenreekswaarde. |
| gebruikers-ID | Een unieke id voor de gebruiker. |
| Gebruikersgegevens | Gebruikersnaam of e-mailadres van de gebruiker. |
| gebruikersrollen | Een matrix van de toegewezen rollen van de gebruiker. |
Om te worden doorgegeven met de X-MS-CLIENT-PRINCIPAL header, moet de JSON-payload Base64-gecodeerd zijn. U kunt hiervoor elk online of offline hulpprogramma gebruiken. 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'