Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Alla API Management-nivåer
Principen validate-graphql-request validerar GraphQL-begäran och ger åtkomst till specifika frågesökvägar i ett GraphQL-API. En ogiltig fråga är ett "begärandefel". Auktorisering görs endast för giltiga begäranden.
Kommentar
Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. Läs mer om hur du anger eller redigerar API Management-principer.
Principuttryck
<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>
Attribut
| Attribut | beskrivning | Obligatoriskt | Standardvärde |
|---|---|---|---|
| error-variable-name | Namnet på variabeln i context.Variables för att logga valideringsfel till. Principuttryck tillåts. |
Nej | Ej tillämpligt |
| maxstorlek | Maximal storlek på nyttolasten för begäran i byte. Högsta tillåtna värde: 102 400 byte (100 KB). (Kontakta supporten om du behöver öka den här gränsen.) Principuttryck tillåts. | Ja | Ej tillämpligt |
| maxdjup | Ett heltal. Maximalt frågedjup. Principuttryck tillåts. | Nej | 6 |
Element
| Namn | beskrivning | Obligatoriskt |
|---|---|---|
| bemyndiga | Lägg till det här elementet för att ange en lämplig auktoriseringsregel för en eller flera sökvägar. | Nej |
| regel | Lägg till ett eller flera av dessa element för att auktorisera specifika frågesökvägar. Varje regel kan också ange en annan åtgärd. Kan anges villkorsstyrt med hjälp av ett principuttryck. | Nej |
regelattribut
| Attribut | beskrivning | Obligatoriskt | Standardvärde |
|---|---|---|---|
| väg | Sökväg för att köra auktoriseringsverifiering på. Den måste följa mönstret: /type/field. |
Ja | Ej tillämpligt |
| åtgärd | Åtgärd att utföra om regeln gäller. Kan anges villkorsstyrt med hjälp av ett principuttryck. | Nej | tillåta |
Introspektionssystem
Principen för path=/__* är introspektionssystemet. Du kan använda den för att avvisa introspektionsbegäranden (__schema, __typeosv.).
Begär åtgärder
Tillgängliga åtgärder beskrivs i följande tabell.
| Åtgärd | beskrivning |
|---|---|
| avvisa | Ett begärandefel inträffar och begäran skickas inte till serverdelen. Ytterligare regler om de har konfigurerats tillämpas inte. |
| ta bort | Ett fältfel inträffar och fältet tas bort från begäran. |
| tillåta | Fältet skickas till serverdelen. |
| bortse från | Regeln är inte giltig för det här fallet och nästa regel tillämpas. |
Förbrukning
- Principavsnitt: inkommande
- Principomfattningar: global, arbetsyta, produkt, API
- Gatewayer: klassisk, v2, förbrukning, lokalt installerad, arbetsyta
Användningsanteckningar
Konfigurera principen för ett direkt- eller syntetiskt GraphQL-API som har importerats till API Management.
Den här principen kan bara användas en gång i ett principavsnitt.
Eftersom GraphQL-frågor använder ett utplattat schema kan behörigheter tillämpas på valfri lövnod av en utdatatyp:
- Mutation, fråga eller prenumeration
- Enskilt fält i en typdeklaration
Behörigheter kanske inte tillämpas på:
- Indatatyper
- Fragment
- Fackföreningar
- Gränssnitt
- Schemaelementet
Principen kan verifiera GraphQL-begäranden med upp till 250 frågefält på alla nivåer.
Felhantering
Det går inte att verifiera mot GraphQL-schemat, eller ett fel för begärans storlek eller djup, är ett begärandefel och resulterar i att begäran misslyckas med ett felblock (men inget datablock).
Precis som egenskapen Context.LastError sprids alla GraphQL-valideringsfel automatiskt i variabeln GraphQLErrors . Om felen måste spridas separat kan du ange ett felvariabelnamn. Fel skickas till variabeln error och variabeln GraphQLErrors .
Exempel
Frågeverifiering
Det här exemplet tillämpar följande verifierings- och auktoriseringsregler på en GraphQL-fråga:
- Begäranden som är större än 100 kb eller med frågedjup större än 4 avvisas.
- Begäranden till introspektionssystemet avvisas.
- Fältet
/Missions/nametas bort från begäranden som innehåller fler än två rubriker.
<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>
Verifiering av mutation
Det här exemplet tillämpar följande verifierings- och auktoriseringsregler på en GraphQL-mutation:
- Begäranden som är större än 100 kb eller med frågedjup större än 4 avvisas.
- Begäranden om att mutera fältet
deleteUsernekas förutom när begäran kommer från IP-adressen198.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>
Relaterade principer
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Principuttryck
- Ange eller redigera principer
- Återanvända principkonfigurationer
- Lagringsplats för principfragment
- Lagringsplats för principlekplats
- Principverktyg för Azure API Management
- Få Hjälp med Copilot för att skapa, förklara och felsöka principer