Dela via


Så här använder du VMware Spring Cloud Gateway-routningsfilter med Azure Spring Apps Enterprise-planen

Kommentar

Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.

Den här artikeln gäller för:❌ Basic/Standard ✔️ Enterprise

Den här artikeln beskriver hur du använder VMware Spring Cloud Gateway-routningsfilter med Azure Spring Apps Enterprise-planen för att dirigera begäranden till dina program.

VMware Spring Cloud Gateway är en kommersiell VMware Tanzu-komponent baserad på Spring Cloud Gateway-projektet med öppen källkod. Spring Cloud Gateway hanterar övergripande problem för API-utvecklingsteam, till exempel enkel inloggning (SSO), åtkomstkontroll, hastighetsbegränsning, återhämtning, säkerhet med mera. Du kan påskynda API-leveransen med hjälp av moderna molnbaserade mönster och valfritt programmeringsspråk som du väljer för API-utveckling.

VMware Spring Cloud Gateway innehåller följande funktioner:

  • Dynamisk routningskonfiguration, oberoende av enskilda program som kan tillämpas och ändras utan omkompilering.
  • Kommersiella API-routningsfilter för att transportera auktoriserade JSON Web Token-anspråk (JWT) till programtjänster.
  • Auktorisering av klientcertifikat.
  • Frekvensbegränsningsmetoder.
  • Kretsbrytarkonfiguration.
  • Stöd för åtkomst till programtjänster via HTTP Basic Authentication-autentiseringsuppgifter.

För att integrera med API-portalen för VMware Tanzu genererar VMware Spring Cloud Gateway automatiskt OpenAPI version 3-dokumentation efter eventuella tillägg eller ändringar i routningskonfigurationen. Mer information finns i Använda API-portalen för VMware Tanzu.

Förutsättningar

Använda filter

Du använder filter i din Spring Cloud Gateway-konfiguration för att agera på inkommande begäran eller utgående svar på en routningskonfiguration.

Du kan till exempel använda ett filter för att lägga till ett HTTP-huvud eller neka åtkomst baserat på en auktoriseringstoken.

Använda filter med öppen källkod

Spring Cloud Gateway OSS innehåller flera GatewayFilter fabriker som används för att skapa filter för vägar. I följande avsnitt beskrivs dessa fabriker.

AddRequestHeader

Fabriken AddRequestHeader lägger till en rubrik i underordnad begärans huvuden för alla matchande begäranden.

Den här fabriken accepterar följande konfigurationsparametrar:

  • name
  • value

I följande exempel konfigureras en AddRequestHeader fabrik som lägger till huvudet X-Request-red:blue i underordnad begärans huvuden för alla matchande begäranden:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "AddRequestHeader=X-Request-red, blue"
        ]
    }
]

Fabriken AddRequestHeader har åtkomst till de URI-variabler som används för att matcha en sökväg eller värd. Du kan använda URI-variabler i värdet och variablerna expanderas vid körning.

I följande exempel konfigureras en AddRequestHeader fabrik som använder en variabel:

[
    {
        "predicates": [
            "Path=/api/{segment}"
        ],
        "filters": [
            "AddRequestHeader=X-Request-red, blue-{segment}"
        ]
    }
]

AddRequestHeadersIfNotPresent

Fabriken AddRequestHeadersIfNotPresent lägger till rubriker om de inte finns i den ursprungliga begäran.

Den här fabriken accepterar följande konfigurationsparameter:

  • headers: En kommaavgränsad lista över nyckel/värde-par (rubriknamn, rubrikvärde).

I följande exempel konfigureras en AddRequestHeadersIfNotPresent fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "AddRequestHeadersIfNotPresent=Content-Type:application/json,Connection:keep-alive"
        ]
    }
]

AddRequestParameter

Fabriken AddRequestParameter lägger till en parameter i den underordnade begärans frågesträng för alla matchande begäranden.

Den här fabriken accepterar följande konfigurationsparametrar:

  • name
  • value

I följande exempel konfigureras en AddRequestParameter fabrik som lägger till en red=blue parameter i den underordnade begärans frågesträng för alla matchande begäranden:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "AddRequestParameter=red, blue"
        ]
    }
]

Fabriken AddRequestParameter har åtkomst till de URI-variabler som används för att matcha en sökväg eller värd. Du kan använda URI-variabler i värdet och variablerna expanderas vid körning.

I följande exempel konfigureras en AddRequestParameter fabrik som använder en variabel:

[
    {
        "predicates": [
            "Path=/api/{segment}"
        ],
        "filters": [
            "AddRequestParameter=foo, bar-{segment}"
        ]
    }
]

AddResponseHeader

Fabriken AddResponseHeader lägger till en rubrik i underordnat svarshuvuden för alla matchande begäranden.

Den här fabriken accepterar följande konfigurationsparametrar:

  • name
  • value

I följande exempel konfigureras en AddResponseHeader fabrik som lägger till en X-Response-Red:Blue rubrik i underordnade svarshuvuden för alla matchande begäranden:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "AddResponseHeader=X-Response-Red, Blue"
        ]
    }
]

Fabriken AddResponseHeader har åtkomst till de URI-variabler som används för att matcha en sökväg eller värd. Du kan använda URI-variabler i värdet och variablerna expanderas vid körning.

I följande exempel konfigureras en AddResponseHeader fabrik som använder en variabel:

[
    {
        "predicates": [
            "Path=/api/{segment}"
        ],
        "filters": [
            "AddResponseHeader=foo, bar-{segment}"
        ]
    }
]

Kretsbrytare

Fabriken CircuitBreaker omsluter vägar i en kretsbrytare.

Den här fabriken accepterar följande konfigurationsparametrar:

  • name: Kretsbrytarens namn.
  • fallbackUri: Reroute-URI:n, som kan vara en lokal väg eller extern hanterare.
  • status codes (valfritt): Den kolonavgränsade listan över statuskoder som ska matchas, i tal- eller textformat.
  • failure rate (valfritt): Tröskelvärdet över vilket kretsbrytaren öppnas. Standardvärdet är 50 %.
  • duration (valfritt): Tiden att vänta innan du stänger igen. Standardvärdet är 60 sekunder.

I följande exempel konfigureras en CircuitBreaker fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "CircuitBreaker=myCircuitBreaker,forward:/inCaseOfFailureUseThis,401:NOT_FOUND:500,10,30s"
        ]
    }
]

DeDupeResponseHeader

Fabriken DeDupeResponseHeader tar bort duplicerade värden för svarshuvuden.

Den här fabriken accepterar följande konfigurationsparametrar:

  • name: En blankstegsavgränsad lista med rubriknamn.
  • strategy (valfritt): De godkända värdena är RETAIN_FIRST, RETAIN_LASToch RETAIN_UNIQUE. Standardvärdet är RETAIN_FIRST.

I följande exempel konfigureras en DeDupeResponseHeader fabrik som tar bort dubblettvärden Access-Control-Allow-Credentials för och Access-Control-Allow-Origin svarshuvuden när båda värdena läggs till av GATEWAY CORS-logiken och den underordnade logiken:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "DeDupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin"
        ]
    }
]

FallbackHeaders

Fabriken FallbackHeaders lägger till ett undantag för kretsbrytare i ett huvud. Det här filtret kräver att filtret används CircuitBreaker i en annan väg.

Det finns inga parametrar för den här fabriken.

I följande exempel konfigureras en FallbackHeaders fabrik med undantagstypen, meddelandet och (om tillgängligt) rotorsaksfeltypen FallbackHeaders och meddelandet som filtret lägger till i begäran:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "CircuitBreaker=myCircuitBreaker,forward:/inCaseOfFailureUseThis,401:NOT_FOUND:500,10,30s"
        ]
    },
    {
        "predicates": [
            "Path=/inCaseOfFailureUseThis"
        ],
        "filters": [
            "FallbackHeaders"
        ]
    }
]

Du kan skriva över namnen på rubrikerna i konfigurationen genom att ange värdena för följande parametrar (anges med deras standardvärden):

  • executionExceptionTypeHeaderName ("Execution-Exception-Type")
  • executionExceptionMessageHeaderName ("Execution-Exception-Message")
  • rootCauseExceptionTypeHeaderName ("Root-Cause-Exception-Type")
  • rootCauseExceptionMessageHeaderName ("Root-Cause-Exception-Message")

JSONToGRPC

Fabriken JSONToGRPCFilter konverterar en JSON-nyttolast till en gRPC-begäran.

Den här fabriken accepterar följande konfigurationsparameter:

  • protoDescriptor: En proto-beskrivningsfil.

Du kan generera den här filen med hjälp protoc av och ange --descriptor_set_out flaggan, som du ser i följande exempel:

protoc --proto_path=src/main/resources/proto/ \
    --descriptor_set_out=src/main/resources/proto/hello.pb \
    src/main/resources/proto/hello.proto

Kommentar

Parametern streaming stöds inte.

I följande exempel konfigureras en JSONToGRPCFilter fabrik med hjälp av utdata från protoc:

[
    {
        "predicates": [
            "Path=/json/**"
        ],
        "filters": [
            "JsonToGrpc=file:proto/hello.pb,file:proto/hello.proto,HelloService,hello"
        ]
    }
]

LocalResponseCache

Fabriken LocalResponseCache åsidosätter cachekonfigurationen för lokala svar för specifika vägar när den globala cachen aktiveras.

Den här fabriken accepterar följande konfigurationsparametrar:

  • size: Den maximala tillåtna storleken på cacheposterna för den här vägen innan cacheborttagningen börjar (i KB, MB och GB).
  • timeToLive: Den tillåtna livslängden för en cachepost innan den upphör att gälla. Använd varaktighetssuffixet s i sekunder, m i minuter eller h i timmar.

I följande exempel konfigureras en LocalResponseCache fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "LocalResponseCache=3m,1MB"
        ]
    }
]

MapRequestHeader

Fabriken MapRequestHeader lägger till en rubrik i den underordnade begäran med uppdaterade värden från den inkommande HTTP-begärans sidhuvud.

Den här fabriken accepterar följande konfigurationsparametrar:

  • fromHeader
  • toHeader

Den här fabriken skapar ett nytt namngivet huvud (toHeader) och värdet extraheras från ett befintligt namngivet huvud (fromHeader) från den inkommande HTTP-begäran. Om indatahuvudet inte finns har filtret ingen effekt. Om det nya namngivna huvudet redan finns utökas dess värden med de nya värdena.

I följande exempel konfigureras en MapRequestHeader fabrik som lägger X-Request-Red:<values> till huvudet i den underordnade begäran med uppdaterade värden från den inkommande HTTP-begäranderubriken Blue :

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "MapRequestHeader=Blue, X-Request-Red"
        ]
    }
]

PrefixPath

Fabriken PrefixPath lägger till ett prefix i sökvägen för alla begäranden.

Den här fabriken accepterar följande konfigurationsparameter:

  • prefix

I följande exempel konfigureras en PrefixPath fabrik som lägger till prefixet /api i sökvägen för alla begäranden, så att en begäran skickas till /catalog /api/catalog:

[
    {
        "predicates": [
            "Path=/catalog/**"
        ],
        "filters": [
            "PrefixPath=/api"
        ]
    }
]

PreserveHostHeader

Fabriken PreserveHostHeader anger ett begärandeattribut som routningsfiltret inspekterar för att avgöra om det ursprungliga värdhuvudet eller värdhuvudet ska skickas som bestäms av HTTP-klienten.

Det finns inga parametrar för den här fabriken.

I följande exempel konfigureras en PreserveHostHeader fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "PreserveHostHeader"
        ]
    }
]

RedirectTo

Fabriken RedirectTo lägger till en omdirigering till den ursprungliga URL:en.

Den här fabriken accepterar följande konfigurationsparametrar:

  • status: Omdirigering av HTTP-kod i 300-serien, till exempel 301.
  • url: Värdet för Location rubriken. Måste vara en giltig URI. För relativa omdirigeringar bör du använda uri: no://op som URI för din vägdefinition.

I följande exempel konfigureras en RedirectTo fabrik som skickar en status 302 med en Location:https://acme.org rubrik för att utföra en omdirigering:

[
    {
        "uri": "https://example.org",
        "filters": [
            "RedirectTo=302, https://acme.org"
        ]
    }
]

RemoveJsonAttributesResponseBody

Fabriken RemoveJsonAttributesResponseBody tar bort JSON-attributen och deras värden från JSON-svarskroppar.

Den här fabriken accepterar följande konfigurationsparametrar:

  • attribute names: En kommaavgränsad lista över namnen på attribut som ska tas bort från ett JSON-svar.
  • delete recursively (valfritt, booleskt): En konfiguration som endast tar bort attributen på rotnivå (false) eller rekursivt (true). Standardvärdet är false.

I följande exempel konfigureras en RemoveJsonAttributesResponseBody fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RemoveJsonAttributesResponseBody=origin,foo,true"
        ]
    }
]

RemoveRequestHeader

Fabriken RemoveRequestHeader tar bort en rubrik från den underordnade begäran.

Den här fabriken accepterar följande konfigurationsparameter:

  • name: Namnet på rubriken som ska tas bort.

Följande lista konfigurerar en RemoveRequestHeader fabrik som tar bort X-Request-Foo huvudet innan det skickas nedströms:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RemoveRequestHeader=X-Request-Foo"
        ]
    }
]

RemoveRequestParameter

Fabriken RemoveRequestParameter tar bort en parameter innan den skickas nedströms.

Den här fabriken accepterar följande konfigurationsparameter:

  • name: Namnet på frågeparametern som ska tas bort.

I följande exempel konfigureras en RemoveRequestParameter fabrik som tar bort parametern innan den red skickas nedströms:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RemoveRequestParameter=red"
        ]
    }
]

RemoveResponseHeader

Fabriken RemoveResponseHeader tar bort en rubrik från svaret innan den returneras till gatewayklienten.

Den här fabriken accepterar följande konfigurationsparameter:

  • name: Namnet på rubriken som ska tas bort.

Följande lista konfigurerar en RemoveResponseHeader fabrik som tar bort X-Response-Foo huvudet från svaret innan det returneras till gatewayklienten:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RemoveResponseHeader=X-Response-Foo"
        ]
    }
]

RequestHeaderSize

Fabriken RequestHeaderSize avgör storleken på begärandehuvudet.

Den här fabriken accepterar följande konfigurationsparametrar:

  • maxSize: Den maximala datastorlek som tillåts av begärandehuvudet, inklusive nyckel och värde.
  • errorHeaderName: Namnet på svarshuvudet som innehåller ett felmeddelande. Som standard är errorMessagenamnet på svarshuvudet .

Följande lista konfigurerar en RequestHeaderSize fabrik som skickar en status 431 om storleken på en begäranderubrik är större än 1 000 byte:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RequestHeaderSize=1000B"
        ]
    }
]

Skriv omLocationResponseHeader

Fabriken RewriteLocationResponseHeader ändrar värdet Location för svarshuvudet, vanligtvis för att bli av med serverdelsspecifik information.

Den här fabriken accepterar följande konfigurationsparametrar:

  • stripVersionMode: Den här parametern har följande möjliga värden: NEVER_STRIP, AS_IN_REQUESToch ALWAYS_STRIP. Standardvärdet är AS_IN_REQUEST.

    • NEVER_STRIP: Versionen är inte borttagen, även om den ursprungliga sökvägen för begäran inte innehåller någon version.
    • AS_IN_REQUEST: Versionen tas endast bort om den ursprungliga sökvägen för begäran inte innehåller någon version.
    • ALWAYS_STRIP: Versionen tas alltid bort, även om den ursprungliga sökvägen för begäran innehåller version.
  • hostValue: Den här parametern används för att ersätta host:port delen av svarshuvudet Location när den tillhandahålls. Om det inte anges används värdet för begärandehuvudet Host .

  • protocolsRegex: En giltig regex String, mot vilken protokollnamnet matchas. Om det inte matchas fungerar inte filtret. Standardvärdet är http|https|ftp|ftps.

  • locationHeaderName

Följande lista konfigurerar en RewriteLocationResponseHeader fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,"
        ]
    }
]

I det här exemplet skrivs värdet för POST svarsrubriken Location object-service.prod.example.net/v2/some/object/id om som api.example.com/some/object/id.api.example.com/some/object/name

Skriv omPath

Fabriken RewritePath använder reguljära Java-uttryck för ett flexibelt sätt att skriva om sökvägen för begäran.

Den här fabriken accepterar följande konfigurationsparametrar:

  • regexp
  • replacement

Följande lista konfigurerar en RewritePath fabrik:

[
    {
        "predicates": [
            "Path=/red/**"
        ],
        "filters": [
            "RewritePath=/red/?(?<segment>.*), /$\\{segment}"
        ]
    }
]

I det här exemplet för en sökväg /red/blueför begäran anger den här konfigurationen sökvägen till /blue innan den underordnade begäran skickas.

Skriv omResponseHeader

Fabriken RewriteResponseHeader använder reguljära Java-uttryck för ett flexibelt sätt att skriva om svarshuvudvärdet.

Den här fabriken accepterar följande konfigurationsparametrar:

  • name
  • regexp
  • replacement

I följande exempel konfigureras en RewriteResponseHeader fabrik:

[
    {
        "predicates": [
            "Path=/red/**"
        ],
        "filters": [
            "RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***"
        ]
    }
]

I det här exemplet, för ett huvudvärde på /42?user=ford&password=omg!what&flag=true, är konfigurationen inställd på /42?user=ford&password=***&flag=true när du har gjort den underordnade begäran.

SetPath

Fabriken SetPath erbjuder ett enkelt sätt att ändra begärandesökvägen genom att tillåta mallsegment i sökvägen. Det här filtret använder URI-mallarna från Spring Framework och tillåter flera matchande segment.

Den här fabriken accepterar följande konfigurationsparameter:

  • template

I följande exempel konfigureras en SetPath fabrik:

[
    {
        "predicates": [
            "Path=/red/{segment}"
        ],
        "filters": [
            "SetPath=/{segment}"
        ]
    }
]

I det här exemplet för en sökväg /red/blueför begäran anger den här konfigurationen sökvägen till /blue innan den underordnade begäran skickas.

SetRequestHeader

Fabriken SetRequestHeader ersätter (i stället för att lägga till) alla rubriker med det angivna namnet.

Den här fabriken accepterar följande konfigurationsparametrar:

  • name
  • value

Följande lista konfigurerar en SetRequestHeader fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "SetRequestHeader=X-Request-Red, Blue"
        ]
    }
]

I det här exemplet svarade nedströmsservern med X-Request-Red:1234, och den ersätts med X-Request-Red:Blue.

Fabriken SetRequestHeader har åtkomst till de URI-variabler som används för att matcha en sökväg eller värd. Du kan använda URI-variabler i värdet och variablerna expanderas vid körning.

I följande exempel konfigureras en SetRequestHeader fabrik som använder en variabel:

[
    {
        "predicates": [
            "Path=/api/{segment}"
        ],
        "filters": [
            "SetRequestHeader=foo, bar-{segment}"
        ]
    }
]

SetResponseHeader

Fabriken SetResponseHeader ersätter (i stället för att lägga till) alla rubriker med det angivna namnet.

Den här fabriken accepterar följande konfigurationsparametrar:

  • name
  • value

Följande lista konfigurerar en SetResponseHeader fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "SetResponseHeader=X-Response-Red, Blue"
        ]
    }
]

I det här exemplet svarade nedströmsservern med X-Response-Red:1234, och den ersätts med X-Response-Red:Blue.

Fabriken SetResponseHeader har åtkomst till de URI-variabler som används för att matcha en sökväg eller värd. Du kan använda URI-variabler i värdet och variablerna expanderas vid körning.

I följande exempel konfigureras en SetResponseHeader fabrik som använder en variabel:

[
    {
        "predicates": [
            "Path=/api/{segment}"
        ],
        "filters": [
            "SetResponseHeader=foo, bar-{segment}"
        ]
    }
]

SetStatus

Fabriken SetStatus konfigurerar svarsstatus för serverbegäran.

Den här fabriken accepterar följande konfigurationsparameter:

  • status: Ett giltigt Spring-värde HttpStatus , som kan ett heltalsvärde som 404, eller strängrepresentationen av uppräkningen, till exempel NOT_FOUND.

Följande lista konfigurerar en SetStatus fabrik:

[
    {
        "predicates": [
            "Path=/experimental/**"
        ],
        "filters": [
            "SetStatus=UNAUTHORIZED"
        ]
    },
    {
        "predicates": [
            "Path=/unknown/**"
        ],
        "filters": [
            "SetStatus=401"
        ]
    }
]

StripPrefix

Fabriken StripPrefix tar bort prefixet från begäran innan det skickas nedströms.

Den här fabriken accepterar följande konfigurationsparameter:

  • parts: Antalet delar i sökvägen för att ta bort från begäran innan den skickas nedströms. Standardvärdet är 1.

I följande exempel konfigureras en StripPrefix fabrik:

[
    {
        "predicates": [
            "Path=/name/**"
        ],
        "filters": [
            "StripPrefix=2"
        ]
    }
]

I det här exemplet görs en begäran via gatewayen till /name/blue/red. Begäran som görs visas nameservice som nameservice/red.

Försök igen

Fabriken Retry avgör antalet återförsök.

Den här fabriken accepterar följande konfigurationsparametrar:

  • retries: Antalet återförsök som ska utföras.
  • statuses: DE HTTP-statuskoder som ska försökas igen, som representeras med hjälp org.springframework.http.HttpStatusav .
  • methods: DE HTTP-metoder som ska göras om, som representeras med hjälp org.springframework.http.HttpMethodav .
  • series: Serien med statuskoder som ska försökas igen, som representeras med hjälp org.springframework.http.HttpStatus.Seriesav .
  • exceptions: Listan över undantag som utlöses som ska göras om.
  • backoff: Den konfigurerade exponentiella backoffen för återförsöken. Återförsök utförs efter ett backoff-intervall på firstBackoff * (factor ^ n), där n är iterationen. Om maxBackoff har konfigurerats är den maximala backoff som tillämpas begränsad till maxBackoff. Om basedOnPreviousValue är sant backoff beräknas värdet med hjälp prevBackoff * factorav .

Följande standardvärden konfigureras för filtret när det Retry är aktiverat:

  • retries:tre gånger.
  • series: 5XX-serien.
  • methods: GET-metod.
  • exceptions: IOException och TimeoutException.
  • backoff:handikappad.

I följande exempel konfigureras en Retry fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "Retry=3,INTERNAL_SERVER_ERROR,GET,10ms,50ms,2,false"
        ]
    }
]

RequestSize

Fabriken RequestSize kan begränsa en begäran från att nå nedströmstjänsten när begärandestorleken är större än den tillåtna gränsen.

Den här fabriken accepterar följande konfigurationsparameter:

  • maxSize: En DataSize typ där värden definieras som ett tal följt av ett valfritt DataUnit suffix, till exempel KB eller MB. Standardsuffixvärdet är B för byte. Det är den tillåtna storleksgränsen för begäran som definierats i byte.

I följande exempel konfigureras en RequestSize fabrik:

[
    {
        "predicates": [
            "Path=/upload"
        ],
        "filters": [
            "RequestSize=5000000"
        ]
    }
]

I det här exemplet, när begäran avvisas på grund av storleken, RequestSize anger fabriken svarsstatusen till 413 Payload Too Large med en annan rubrik errorMessage.

I följande exempel visas ett errorMessage:

errorMessage : Request size is larger than permissible limit. Request size is 6.0 MB where permissible limit is 5.0 MB

TokenRelay

Fabriken TokenRelay vidarebefordrar en OAuth2 åtkomsttoken till underordnade resurser. Det här filtret konfigureras som ett boolean värde i routningsdefinitionen i stället för ett explicit filter.

I följande exempel konfigureras en TokenRelay fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "tokenRelay": true
    }
]

Använda kommersiella filter

Spring Cloud Gateway för Kubernetes innehåller också många anpassade GatewayFilter fabriker. I följande avsnitt beskrivs dessa fabriker.

AllowedRequestCookieCount

Fabriken AllowedRequestCookieCount avgör om en matchande begäran tillåts fortsätta baserat på antalet cookies.

Den här fabriken accepterar följande konfigurationsparameter:

  • amount: Antalet tillåtna cookies.

I följande exempel konfigureras en AllowedRequestCookieCount fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "AllowedRequestCookieCount=2"
        ]
    }
]

AllowedRequestHeadersCount

Fabriken AllowedRequestHeadersCount avgör om en matchande begäran tillåts fortsätta baserat på antalet huvuden.

Den här fabriken accepterar följande konfigurationsparameter:

  • amount: Antalet tillåtna rubriker.

I följande exempel konfigureras en AllowedRequestHeadersCount fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "AllowedRequestHeadersCount=4"
        ]
    }
]

AllowedRequestQueryParamsCount

Fabriken AllowedRequestQueryParamsCount avgör om en matchande begäran tillåts fortsätta baserat på antalet frågeparametrar.

Den här fabriken accepterar följande konfigurationsparameter:

  • amount: Antalet tillåtna parametrar.

I följande exempel konfigureras en AllowedRequestQueryParamsCount fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "AllowedRequestQueryParamsCount=3"
        ]
    }
]

BasicAuth

Fabriken BasicAuth lägger till en BasicAuth Authorization rubrik i begäranden.

Det finns inga parametrar för den här fabriken.

I följande exempel konfigureras en BasicAuth fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "BasicAuth"
        ]
    }
]

ClaimHeader

Fabriken ClaimHeader kopierar data från ett JWT-anspråk till ett HTTP-huvud.

Den här fabriken accepterar följande konfigurationsparametrar:

  • Claim name: Det skiftlägeskänsliga namnet på anspråket som ska skickas.
  • Header name: Namnet på HTTP-huvudet.

I följande exempel konfigureras en ClaimHeader fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "ClaimHeader=sub,X-Claim-Sub"
        ]
    }
]

ClientCertificateHeader

Fabriken ClientCertificateHeader validerar X-Forwarded-Client-Cert huvudcertifikatet.

Den här fabriken accepterar följande konfigurationsparametrar:

  • domain pattern: Värdet X-Forwarded-Client-Cert enligt Kubernetes förmåga att identifiera klientcertifikatets certifikatutfärdare.
  • certificate fingerprint(valfritt): TLS/SSL-certifikatets fingeravtryck.

I följande exempel konfigureras en ClientCertificateHeader fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "ClientCertificateHeader=*.example.com,sha-1:aa:bb:00:99"
        ]
    }
]

CORS

Fabriken Cors aktiverar CORS-valideringarna på en väg.

Den här fabriken accepterar följande konfigurationsparametrar som är ordnade som nyckel/värde-par för CORS-alternativ:

  • allowedOrigins
  • allowedMethods
  • allowedHeaders
  • maxAge
  • allowCredentials
  • allowedOriginPatterns

I följande exempel konfigureras en Cors fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "Cors=[allowedOrigins:https://origin-1,allowedMethods:GET;POST;DELETE,allowedHeaders:*,maxAge:400,allowCredentials:true,allowedOriginPatterns:https://*.test.com:8080]"
        ]
    }
]

JsonToXml

Fabriken JsonToXml omvandlar JSON-svarstexten till XML-svarstext.

Den här fabriken accepterar följande konfigurationsparameter:

  • wrapper: Rottaggnamnet för XML-svaret om en annan rottagg krävs för att generera giltig XML. Standardvärdet är response.

I följande exempel konfigureras en JsonToXml fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "JsonToXml=custom-response"
        ]
    }
]

RateLimit

Fabriken RateLimit avgör om en matchande begäran tillåts fortsätta baserat på begärandevolymen.

Den här fabriken accepterar följande konfigurationsparametrar:

  • request limit: Det maximala antalet begäranden som accepteras under fönstret.
  • window duration: Fönstrets varaktighet i millisekunder. Du kan också använda suffixen s, m eller h för att ange varaktigheten i sekunder, minuter eller timmar.
  • partition source (valfritt): Platsen för partitionsnyckeln (claim, headereller IPs).
  • partition key (valfritt): Värdet som används för att partitioneras räknare för begäranden.

I följande exempel konfigureras en RateLimit fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RateLimit=1,10s"
        ]
    }
]

Följande exempel visar andra RateLimit konfigurationer:

RateLimit=1,10s
RateLimit=1,10s,{claim:client_id}
RateLimit=1,10s,{header:client_id}
RateLimit=2,10s,{IPs:2;127.0.0.1;192.168.0.1}

RestrictRequestHeaders

Fabriken RestrictRequestHeaders avgör om en matchande begäran tillåts fortsätta baserat på rubrikerna.

Om det finns HTTP-huvuden som inte är skiftlägesokänsliga headerList returneras ett svar 431 Forbidden error från klienten.

Den här fabriken accepterar följande konfigurationsparameter:

  • headerList: Skiftlägesokänslig lista över namn på tillåtna rubriker.

I följande exempel konfigureras en RestrictRequestHeaders fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RestrictRequestHeaders=Content-Type,x-request-temp"
        ]
    }
]

Skriv omAllResponseHeaders

Fabriken RewriteAllResponseHeaders skriver om flera svarshuvuden samtidigt.

Den här fabriken accepterar följande konfigurationsparametrar:

  • pattern to match: Det reguljära uttrycket som ska matchas mot rubrikvärden.
  • replacement: Ersättningsvärdet.

I följande exempel konfigureras en RewriteAllResponseHeaders fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RewriteAllResponseHeaders=\\d,0"
        ]
    }
]

Skriv omResponseBody

Fabriken RewriteResponseBody ändrar brödtexten för ett svar.

Den här fabriken accepterar följande konfigurationsparametrar som är ordnade som en kommaavgränsad lista över nyckel/värde-par, där varje par accepterar formuläret pattern to match:replacement:

  • pattern to match: Det reguljära uttryck som ska matchas mot text i svarstexten.
  • replacement: Ersättningsvärdet.

I följande exempel konfigureras en RewriteResponseBody fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RewriteResponseBody=foo:bar,/path-one/:/path-two/"
        ]
    }
]

Skriv omJsonAttributesResponseBody

Fabriken RewriteJsonAttributesResponseBody skriver om JSON-attribut med notation JSONPath .

Den här fabriken accepterar följande konfigurationsparametrar som är ordnade som en kommaavgränsad lista över nyckel/värde-par, där varje par accepterar formuläret jsonpath:replacement:

  • jsonpath: Uttrycket JSONPath som ska matchas mot svarstexten.
  • replacement: Ersättningsvärdet.

I följande exempel konfigureras en RewriteJsonAttributesResponseBody fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "RewriteJsonAttributesResponseBody=slides[1].title:Welcome,date:11-11-2022"
        ]
    }
]

Roller

Fabriken Roles auktoriserar begäranden som innehåller en av de konfigurerade rollerna.

Den här fabriken accepterar följande konfigurationsparameter:

  • roles: En kommaavgränsad lista över auktoriserade roller.

I följande exempel konfigureras en Roles fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "Roles=role_01,role_02"
        ]
    }
]

Omfattningar

Fabriken Scopes auktoriserar begäranden som innehåller något av de konfigurerade OAuth omfången.

Den här fabriken accepterar följande konfigurationsparameter:

  • scopes: En kommaavgränsad lista över auktoriserade OAuth omfång.

I följande exempel konfigureras en Scopes fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "Scopes=api.read,api.write,user"
        ]
    }
]

StoreIpAddress

Fabriken StoreIPAddress används endast för tilläggsutveckling och i programmets kontext.

Den här fabriken accepterar följande konfigurationsparameter:

  • attribute name: Namnet som används för att lagra IP-adressen som ett exchange-attribut.

I följande exempel konfigureras en StoreIPAddress fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "StoreIpAddress=ip"
        ]
    }
]

Inloggning med enkel inloggning

Fabriken SSO login omdirigeras för att autentisera om det inte finns någon giltig auktoriseringstoken. Den här fabriken konfigureras som ett boolean värde i routningsdefinitionen i stället för ett explicit filter.

I följande exempel konfigureras en SSO login fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "ssoEnabled": true
    }
]

StoreHeader

Fabriken StoreHeader lagrar ett rubrikvärde i programmets kontext. Det här filtret används endast för tilläggsutveckling.

Den här fabriken accepterar följande konfigurationsparametrar:

  • headers: En lista med rubriker att kontrollera. Den första som hittades används.
  • attribute name: Namnet som används för att lagra rubrikvärdet som ett exchange-attribut.

I följande exempel konfigureras en StoreHeader fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "StoreHeader=x-tracing-header,custom-id,x-custom-id,tracingParam"
        ]
    }
]

XmlToJson

Fabriken XmlToJson omvandlar XML-svarstexten till JSON-svarstexten.

Det finns inga parametrar för den här fabriken.

I följande exempel konfigureras en XmlToJson fabrik:

[
    {
        "predicates": [
            "Path=/api/**"
        ],
        "filters": [
            "XmlToJson"
        ]
    }
]

Nästa steg