GraphQL-aanvraag valideren
VAN TOEPASSING OP: Alle API Management-lagen
Het validate-graphql-request
beleid valideert de GraphQL-aanvraag en autoriseert toegang tot specifieke querypaden in een GraphQL-API. Een ongeldige query is een aanvraagfout. Autorisatie wordt alleen uitgevoerd voor geldige aanvragen.
Notitie
Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Meer informatie over het instellen of bewerken van API Management-beleid.
Beleidsinstructie
<validate-graphql-request error-variable-name="variable name" max-size="size in bytes" max-depth="query depth">
<authorize>
<rule path="query path, for example: '/listUsers' or '/__*'" action="string or policy expression that evaluates to 'allow | remove | reject | ignore'" />
</authorize>
</validate-graphql-request>
Kenmerken
Kenmerk | Beschrijving | Vereist | Standaardinstelling |
---|---|---|---|
error-variable-name | De naam van de variabele waarin context.Variables validatiefouten moeten worden vastgelegd. Beleidsexpressies zijn toegestaan. |
Nee | N.v.t. |
maximale grootte | Maximale grootte van de nettolading van de aanvraag in bytes. Maximaal toegestane waarde: 102.400 bytes (100 kB). (Neem contact op met de ondersteuning als u deze limiet wilt verhogen.) Beleidsexpressies zijn toegestaan. | Ja | N.v.t. |
maximale diepte | Een geheel getal. Maximale querydiepte. Beleidsexpressies zijn toegestaan. | Nee | 6 |
Elementen
Name | Beschrijving | Vereist |
---|---|---|
machtigen | Voeg dit element toe om een juiste autorisatieregel in te stellen voor een of meer paden. | Nee |
regel | Voeg een of meer van deze elementen toe om specifieke querypaden te autoriseren. Elke regel kan desgewenst een andere actie opgeven. Kan voorwaardelijk worden opgegeven met behulp van een beleidsexpressie. | Nee |
regelkenmerken
Kenmerk | Beschrijving | Vereist | Standaardinstelling |
---|---|---|---|
path | Pad voor het uitvoeren van autorisatievalidatie op. Het moet het patroon volgen: /type/field . |
Ja | N.v.t. |
action | Actie die moet worden uitgevoerd als de regel van toepassing is. Kan voorwaardelijk worden opgegeven met behulp van een beleidsexpressie. | Nee | toestaan |
Introspection systeem
Het beleid voor path=/__*
is het introspection-systeem . U kunt deze gebruiken om introspectieaanvragen (__schema
, __type
enzovoort) af te wijzen.
Aanvraagacties
Beschikbare acties worden beschreven in de volgende tabel.
Actie | Beschrijving |
---|---|
verwerpen | Er treedt een aanvraagfout op en de aanvraag wordt niet naar de back-end verzonden. Aanvullende regels als deze zijn geconfigureerd, worden niet toegepast. |
remove | Er treedt een veldfout op en het veld wordt verwijderd uit de aanvraag. |
toestaan | Het veld wordt doorgegeven aan de back-end. |
negeren | De regel is niet geldig voor dit geval en de volgende regel wordt toegepast. |
Gebruik
- Beleidssecties: inkomend
- Beleidsbereiken: globaal, werkruimte, product, API
- Gateways: klassiek, v2, verbruik, zelf-hostend, werkruimte
Gebruiksnotities
Configureer het beleid voor een passthrough - of synthetische GraphQL-API die is geïmporteerd in API Management.
Dit beleid kan slechts eenmaal worden gebruikt in een beleidssectie.
Omdat GraphQL-query's een plat schema gebruiken, kunnen machtigingen worden toegepast op elk bladknooppunt van een uitvoertype:
- Mutatie, query of abonnement
- Afzonderlijk veld in een typedeclaratie
Machtigingen kunnen niet worden toegepast op:
- Invoertypen
- Fragmenten
- Vakbonden
- Interfaces
- Het schema-element
Het beleid kan GraphQL-aanvragen valideren met maximaal 250 queryvelden op alle niveaus.
Foutafhandeling
Het valideren van het GraphQL-schema of een fout voor de grootte of diepte van de aanvraag is een aanvraagfout en resulteert erin dat de aanvraag is mislukt met een foutenblok (maar geen gegevensblok).
Net als bij de Context.LastError
eigenschap worden alle GraphQL-validatiefouten automatisch doorgegeven in de GraphQLErrors
variabele. Als de fouten afzonderlijk moeten worden doorgegeven, kunt u een naam voor de foutvariabele opgeven. Fouten worden naar de error
variabele en de GraphQLErrors
variabele gepusht.
Voorbeelden
Queryvalidatie
In dit voorbeeld worden de volgende validatie- en autorisatieregels toegepast op een GraphQL-query:
- Aanvragen die groter zijn dan 100 kB of met een querydiepte die groter is dan 4, worden geweigerd.
- Aanvragen voor het introspectiesysteem worden geweigerd.
- Het
/Missions/name
veld wordt verwijderd uit aanvragen met meer dan twee headers.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4">
<authorize>
<rule path="/__*" action="reject" />
<rule path="/Missions/name" action="@(context.Request.Headers.Count > 2 ? "remove" : "allow")" />
</authorize>
</validate-graphql-request>
Mutatievalidatie
In dit voorbeeld worden de volgende validatie- en autorisatieregels toegepast op een GraphQL-mutatie:
- Aanvragen die groter zijn dan 100 kB of met een querydiepte die groter is dan 4, worden geweigerd.
- Aanvragen voor het muteren van het
deleteUser
veld worden geweigerd, behalve wanneer de aanvraag afkomstig is van het IP-adres198.51.100.1
.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4">
<authorize>
<rule path="/Mutation/deleteUser" action="@(context.Request.IpAddress <> "198.51.100.1" ? "deny" : "allow")" />
</authorize>
</validate-graphql-request>
Gerelateerd beleid
Gerelateerde inhoud
Zie voor meer informatie over het werken met beleid:
- Zelfstudie: Uw API transformeren en beveiligen
- Beleidsreferentie voor een volledige lijst met beleidsinstructies en hun instellingen
- Beleidsexpressies
- Beleid instellen of bewerken
- Beleidsconfiguraties opnieuw gebruiken
- Beleidsfragmentenopslagplaats
- Azure API Management-beleidstoolkit
- Beleid ontwerpen met Behulp van Microsoft Copilot in Azure