Så här använder du VMware Spring Cloud Gateway-routningsfilter med Azure Spring Apps Enterprise-planen
Kommentar
Basic-, Standard- och Enterprise-planerna kommer att vara inaktuella från och med mitten av mars 2025, med en 3-årig pensionsperiod. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i meddelandet om azure Spring Apps-pensionering.
Standardförbrukningen och den dedikerade planen kommer att vara inaktuell från och med den 30 september 2024, med en fullständig avstängning efter sex månader. Vi rekommenderar att du övergår till Azure Container Apps. Mer information finns i Migrera Azure Spring Apps Standard-förbrukning och dedikerad plan till Azure Container Apps.
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
- En redan etablerad Azure Spring Apps Enterprise-plantjänstinstans med Spring Cloud Gateway aktiverad. Mer information finns i Snabbstart: Skapa och distribuera appar till Azure Spring Apps med hjälp av Enterprise-planen.
- Azure CLI version 2.0.67 eller senare. Använd följande kommando för att installera Azure Spring Apps-tillägget:
az extension add --name spring
.
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 öppen källkod filter
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 ärRETAIN_FIRST
,RETAIN_LAST
ochRETAIN_UNIQUE
. Standardvärdet ärRETAIN_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 varaktighetssuffixets
i sekunder,m
i minuter ellerh
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 exempel301
.url
: Värdet förLocation
rubriken. Måste vara en giltig URI. För relativa omdirigeringar bör du användauri: 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 ärfalse
.
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 ärerrorMessage
namnet 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_REQUEST
ochALWAYS_STRIP
. Standardvärdet ärAS_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ättahost:port
delen av svarshuvudetLocation
när den tillhandahålls. Om det inte anges används värdet för begärandehuvudetHost
.protocolsRegex
: En giltig regexString
, mot vilken protokollnamnet matchas. Om det inte matchas fungerar inte filtret. Standardvärdet ärhttp|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/blue
fö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/blue
fö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ärdeHttpStatus
, som kan ett heltalsvärde som404
, eller strängrepresentationen av uppräkningen, till exempelNOT_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älporg.springframework.http.HttpStatus
av .methods
: DE HTTP-metoder som ska göras om, som representeras med hjälporg.springframework.http.HttpMethod
av .series
: Serien med statuskoder som ska försökas igen, som representeras med hjälporg.springframework.http.HttpStatus.Series
av .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ärn
är iterationen. OmmaxBackoff
har konfigurerats är den maximala backoff som tillämpas begränsad tillmaxBackoff
. OmbasedOnPreviousValue
är santbackoff
beräknas värdet med hjälpprevBackoff * factor
av .
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
ochTimeoutException
.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
: EnDataSize
typ där värden definieras som ett tal följt av ett valfrittDataUnit
suffix, till exempelKB
ellerMB
. Standardsuffixvärdet ärB
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ärdetX-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 ärresponse
.
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 suffixens
,m
ellerh
för att ange varaktigheten i sekunder, minuter eller timmar.partition source
(valfritt): Platsen för partitionsnyckeln (claim
,header
ellerIPs
).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
: UttrycketJSONPath
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 auktoriseradeOAuth
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"
]
}
]