Megosztás a következőn keresztül:


VMware Spring Cloud Gateway útvonalszűrők használata az Azure Spring Apps Enterprise-csomaggal

Feljegyzés

Az Azure Spring Apps az Azure Spring Cloud szolgáltatás új neve. Bár a szolgáltatásnak új neve van, bizonyos helyeken a régi nevet fogja látni egy darabig, miközben az eszközök, például képernyőképek, videók és diagramok frissítésével dolgozunk.

Ez a cikk a következőre vonatkozik:❌ Basic/Standard ✔️ Enterprise

Ez a cikk bemutatja, hogyan használhatja a VMware Spring Cloud Gateway útvonalszűrőit az Azure Spring Apps Enterprise-csomaggal a kérések alkalmazásokhoz való átirányításához.

A VMware Spring Cloud Gateway egy kereskedelmi VMware Tanzu-összetevő, amely a nyílt forráskódú Spring Cloud Gateway-projekten alapul. A Spring Cloud Gateway kezeli az API-fejlesztői csapatok átfogó problémáit, például az egyszeri bejelentkezést (SSO), a hozzáférés-vezérlést, a sebességkorlátozást, a rugalmasságot, a biztonságot és egyebeket. Az API-teljesítést modern, natív felhőminták és az API-fejlesztéshez választott programozási nyelv használatával felgyorsíthatja.

A VMware Spring Cloud Gateway a következő funkciókat tartalmazza:

  • Dinamikus útválasztási konfiguráció, független az egyes alkalmazásoktól, amelyek újrafordítás nélkül alkalmazhatók és módosíthatók.
  • Kereskedelmi API-útvonalszűrők engedélyezett JSON-webjogkivonat (JWT) jogcímek alkalmazásszolgáltatásokba való továbbításához.
  • Ügyféltanúsítvány-engedélyezés.
  • Sebességkorlátozó megközelítések.
  • Megszakító konfigurációja.
  • Az alkalmazásszolgáltatások http-alapszintű hitelesítési hitelesítő adatokon keresztüli elérésének támogatása.

A VMware Tanzu API Portallal való integrálásához a VMware Spring Cloud Gateway automatikusan létrehozza az OpenAPI 3- es verziójának dokumentációját az útvonalkonfigurációk kiegészítése vagy módosítása után. További információ: A VMware Tanzu API-portáljának használata.

Előfeltételek

Szűrők használata

A Spring Cloud Gateway konfigurációjában szűrőkkel reagálhat az útvonalkonfiguráció bejövő vagy kimenő válaszára.

Egy szűrővel például hozzáadhat egy HTTP-fejlécet, vagy megtagadhatja a hozzáférést egy engedélyezési jogkivonat alapján.

Nyílt forráskód szűrők használata

A Spring Cloud Gateway OSS számos GatewayFilter gyárat tartalmaz az útvonalak szűrőinek létrehozásához. A következő szakaszok ezeket a gyárakat írják le.

AddRequestHeader

A AddRequestHeader gyár hozzáad egy fejlécet az alsóbb rétegbeli kérés fejléceihez az összes egyező kéréshez.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • name
  • value

Az alábbi példa egy AddRequestHeader olyan gyárat konfigurál, amely hozzáadja a fejlécet X-Request-red:blue az alsóbb rétegbeli kérés fejléceihez az összes egyező kéréshez:

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

A AddRequestHeader gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.

Az alábbi példa egy AddRequestHeader változót használó gyárat konfigurál:

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

AddRequestHeadersIfNotPresent

A AddRequestHeadersIfNotPresent gyár fejléceket ad hozzá, ha nem szerepelnek az eredeti kérelemben.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • headers: Kulcs-érték párok vesszővel tagolt listája (fejlécnév, fejlécérték).

Az alábbi példa egy AddRequestHeadersIfNotPresent gyárat konfigurál:

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

AddRequestParameter

Az AddRequestParameter előállító hozzáad egy paramétert az alsóbb rétegbeli kérés lekérdezési sztringéhez az összes egyező kéréshez.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • name
  • value

Az alábbi példa egy AddRequestParameter olyan gyárat konfigurál, amely egy paramétert red=blue ad hozzá az alsóbb rétegbeli kérés lekérdezési sztringéhez az összes egyező kéréshez:

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

A AddRequestParameter gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.

Az alábbi példa egy AddRequestParameter változót használó gyárat konfigurál:

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

AddResponseHeader

A AddResponseHeader gyár hozzáad egy fejlécet az alsóbb rétegbeli válasz fejléceihez az összes egyező kéréshez.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • name
  • value

Az alábbi példa egy AddResponseHeader olyan gyárat konfigurál, amely fejlécet X-Response-Red:Blue ad hozzá az alsóbb rétegbeli válasz fejléceihez az összes egyező kéréshez:

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

A AddResponseHeader gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.

Az alábbi példa egy AddResponseHeader változót használó gyárat konfigurál:

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

CircuitBreaker

A CircuitBreaker gyár egy áramkör-megszakítóba csomagolja az útvonalakat.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • name: Az áramkör-megszakító neve.
  • fallbackUri: Az átirányítási URI, amely lehet helyi útvonal vagy külső kezelő.
  • status codes (nem kötelező): Az egyeztetni kívánt állapotkódok kettőspontra tagolt listája szám- vagy szövegformátumban.
  • failure rate (nem kötelező): Az a küszöbérték, amely felett megnyílik az áramkör-megszakító. Az alapértelmezett érték 50%.
  • duration (nem kötelező): A várakozási idő, mielőtt újra bezárul. Az alapértelmezett érték 60 másodperc.

Az alábbi példa egy CircuitBreaker gyárat konfigurál:

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

DeDupeResponseHeader

Az DeDupeResponseHeader előállító eltávolítja a válaszfejlécek ismétlődő értékeit.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • name: A fejlécnevek szóközzel elválasztott listája.
  • strategy(nem kötelező): Az elfogadott értékek a következőkRETAIN_FIRST: és RETAIN_UNIQUERETAIN_LAST. Az alapértelmezett érték RETAIN_FIRST.

Az alábbi példa egy DeDupeResponseHeader olyan gyárat konfigurál, amely eltávolítja a duplikált értékeket Access-Control-Allow-Credentials és Access-Control-Allow-Origin a válaszfejléceket, amikor mindkét értéket hozzáadja az átjáró CORS-logikája és az alsóbb rétegbeli logika:

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

FallbackHeaders

A FallbackHeaders gyár hozzáad minden megszakító kivételt egy fejléchez. Ehhez a szűrőhöz egy másik útvonalon kell használni a CircuitBreaker szűrőt.

Ehhez a gyárhoz nincsenek paraméterek.

Az alábbi példa egy FallbackHeaders olyan gyárat konfigurál, amely kivételtípussal, üzenettel és (ha elérhető) kiváltó ok kivételtípussal és üzenettel rendelkezik, amelyet a FallbackHeaders szűrő hozzáad a kéréshez:

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

Felülírhatja a konfigurációban lévő fejlécek nevét a következő paraméterek (az alapértelmezett értékekkel említett) értékének beállításával:

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

JSONToGRPC

A JSONToGRPCFilter gyár egy JSON hasznos adatát gRPC-kéréssé alakítja át.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • protoDescriptor: Proto leíró fájl.

Ezt a fájlt a --descriptor_set_out jelölő használatával protoc és megadásával hozhatja létre, ahogyan az alábbi példában látható:

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

Feljegyzés

A streaming paraméter nem támogatott.

Az alábbi példa egy JSONToGRPCFilter gyárat konfigurál a következő protockimenettel:

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

LocalResponseCache

A LocalResponseCache gyár felülbírálja a helyi válaszgyorsítótár konfigurációját adott útvonalakhoz a globális gyorsítótár aktiválásakor.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • size: Az útvonal gyorsítótár-bejegyzéseinek maximális megengedett mérete a gyorsítótár kiürítésének megkezdése előtt (KB, MB és GB formátumban).
  • timeToLive: A gyorsítótárbejegyzés lejárat előtti engedélyezett élettartama. Használja az időtartam utótagját s másodpercekre, m percekre vagy h órákra.

Az alábbi példa egy LocalResponseCache gyárat konfigurál:

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

MapRequestHeader

Az MapRequestHeader előállító hozzáad egy fejlécet az alsóbb rétegbeli kérelemhez a bejövő HTTP-kérés fejlécéből származó frissített értékekkel.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • fromHeader
  • toHeader

Ez az előállító létrehoz egy új elnevezett fejlécet (toHeader), és az értéket kinyeri egy meglévő elnevezett fejlécből (fromHeader) a bejövő HTTP-kérelemből. Ha a bemeneti fejléc nem létezik, a szűrőnek nincs hatása. Ha az új elnevezett fejléc már létezik, az értékek az új értékekkel bővülnek.

Az alábbi példa egy MapRequestHeader olyan gyárat konfigurál, amely hozzáadja a X-Request-Red:<values> fejlécet az alsóbb rétegbeli kérelemhez a bejövő HTTP-kérés fejlécéből Blue származó frissített értékekkel:

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

PrefixPath

A PrefixPath gyár egy előtagot ad hozzá az összes kérés útvonalához.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • prefix

Az alábbi példa egy PrefixPath olyan gyárat konfigurál, amely hozzáadja az előtagot /api az összes kérés útvonalához, hogy a rendszer elküldje a /catalog kérést a következőnek /api/catalog:

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

PreserveHostHeader

A PreserveHostHeader gyár beállít egy kérelemattribútumot, amelyet az útválasztási szűrő figyelembe véve határozza meg, hogy az eredeti gazdagépfejlécet vagy a HTTP-ügyfél által meghatározott gazdagépfejlécet küldi-e el.

Ehhez a gyárhoz nincsenek paraméterek.

Az alábbi példa egy PreserveHostHeader gyárat konfigurál:

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

Átirányítás

A RedirectTo gyár átirányítja az eredeti URL-címet.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • status: 300-as sorozatú átirányítási HTTP-kód, például 301.
  • url: A fejléc értéke Location . Érvényes URI-nak kell lennie. Relatív átirányítások esetén az útvonaldefiníció URI-jaként kell használnia uri: no://op .

Az alábbi példa egy RedirectTo olyan gyárat konfigurál, amely egy fejlécet tartalmazó Location:https://acme.org állapotot 302 küld átirányítás végrehajtására:

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

RemoveJsonAttributesResponseBody

A RemoveJsonAttributesResponseBody gyár eltávolítja a JSON-attribútumokat és azok értékeit a JSON választestekből.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • attribute names: A JSON-válaszból eltávolítandó attribútumok vesszővel tagolt listája.
  • delete recursively (nem kötelező, logikai): Olyan konfiguráció, amely csak gyökérszinten (false) vagy rekurzívan (true) távolítja el az attribútumokat. Az alapértelmezett érték false.

Az alábbi példa egy RemoveJsonAttributesResponseBody gyárat konfigurál:

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

RemoveRequestHeader

A RemoveRequestHeader gyár eltávolít egy fejlécet az alsóbb rétegbeli kérelemből.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • name: Az eltávolítandó fejléc neve.

Az alábbi lista egy RemoveRequestHeader olyan gyárat konfigurál, amely eltávolítja a X-Request-Foo fejlécet az alsóbb rétegbeli küldés előtt:

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

RemoveRequestParameter

A RemoveRequestParameter gyár eltávolít egy paramétert, mielőtt továbbküldené.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • name: Az eltávolítandó lekérdezési paraméter neve.

Az alábbi példa egy RemoveRequestParameter olyan gyárat konfigurál, amely eltávolítja a red paramétert, mielőtt továbbküldésre kerül:

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

RemoveResponseHeader

Az RemoveResponseHeader előállító eltávolít egy fejlécet a válaszból, mielőtt visszakerül az átjáróügyfélre.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • name: Az eltávolítandó fejléc neve.

Az alábbi lista egy RemoveResponseHeader olyan gyárat konfigurál, amely eltávolítja a X-Response-Foo fejlécet a válaszból, mielőtt visszakerül az átjáróügyfélre:

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

RequestHeaderSize

A RequestHeaderSize gyár határozza meg a kérelem fejlécének méretét.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • maxSize: A kérelemfejléc által megengedett maximális adatméret, beleértve a kulcsot és az értéket.
  • errorHeaderName: A hibaüzenetet tartalmazó válaszfejléc neve. Alapértelmezés szerint a válaszfejléc neve .errorMessage

Az alábbi lista egy RequestHeaderSize olyan gyárat konfigurál, amely akkor küld állapotot 431 , ha a kérésfejléc mérete meghaladja az 1000 bájtot:

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

RewriteLocationResponseHeader

A RewriteLocationResponseHeader gyár módosítja a válaszfejléc értékét Location , általában a háttérspecifikus részletek eltávolításához.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • stripVersionMode: Ez a paraméter a következő lehetséges értékekkel rendelkezik: NEVER_STRIP, AS_IN_REQUESTés ALWAYS_STRIP. Az alapértelmezett érték AS_IN_REQUEST.

    • NEVER_STRIP: A verzió nem lesz eltávolítva, még akkor sem, ha az eredeti kérelem elérési útja nem tartalmaz verziót.
    • AS_IN_REQUEST: A verzió csak akkor lesz eltávolítva, ha az eredeti kérelem elérési útja nem tartalmaz verziót.
    • ALWAYS_STRIP: A verzió mindig le van vetve, még akkor is, ha az eredeti kérelem elérési útja tartalmazza a verziót.
  • hostValue: Ez a paraméter a válaszfejléc Location azon részének cseréjére host:port szolgál, amikor meg van adva. Ha nincs megadva, a kérelem fejlécének Host értékét használja a rendszer.

  • protocolsRegex: Érvényes regex String, amelyhez a protokoll neve egyezik. Ha nincs megfeleltetve, a szűrő nem működik. Az alapértelmezett érték http|https|ftp|ftps.

  • locationHeaderName

A következő lista egy gyárat RewriteLocationResponseHeader konfigurál:

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

Ebben a példában a kérelemérték POSTapi.example.com/some/object/nameesetében a Location válasz fejlécének object-service.prod.example.net/v2/some/object/id értéke újra lesz írva api.example.com/some/object/id.

Átírásipath

A RewritePath gyár Java reguláris kifejezéseket használ a kérési útvonal rugalmas átírásához.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • regexp
  • replacement

A következő lista egy gyárat RewritePath konfigurál:

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

Ebben a példában a kérelem elérési útja /red/blueesetén ez a konfiguráció beállítja az elérési utat /blue az alsóbb rétegbeli kérés végrehajtása előtt.

RewriteResponseHeader

A RewriteResponseHeader gyár Java-reguláris kifejezéseket használ a válaszfejléc értékének rugalmas átírásához.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • name
  • regexp
  • replacement

Az alábbi példa egy RewriteResponseHeader gyárat konfigurál:

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

Ebben a példában egy fejlécérték /42?user=ford&password=omg!what&flag=trueesetében a konfiguráció az alsóbb rétegbeli kérés végrehajtása után lesz beállítva /42?user=ford&password=***&flag=true .

SetPath

A SetPath gyár egyszerű módot kínál a kérelem útvonalának módosítására az elérési út sablonalapú szegmenseinek engedélyezésével. Ez a szűrő a Spring Framework URI-sablonjait használja, és több egyező szegmenst is lehetővé tesz.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • template

Az alábbi példa egy SetPath gyárat konfigurál:

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

Ebben a példában a kérelem elérési útja /red/blueesetén ez a konfiguráció beállítja az elérési utat /blue az alsóbb rétegbeli kérés végrehajtása előtt.

SetRequestHeader

Az SetRequestHeader előállító az összes fejlécet lecseréli (ahelyett, hogy hozzáadja) a megadott névre.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • name
  • value

A következő lista egy gyárat SetRequestHeader konfigurál:

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

Ebben a példában az alsóbb rétegbeli kiszolgáló a következővel X-Request-Red:1234válaszolt:X-Request-Red:Blue

A SetRequestHeader gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.

Az alábbi példa egy SetRequestHeader változót használó gyárat konfigurál:

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

SetResponseHeader

Az SetResponseHeader előállító az összes fejlécet lecseréli (ahelyett, hogy hozzáadja) a megadott névre.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • name
  • value

A következő lista egy gyárat SetResponseHeader konfigurál:

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

Ebben a példában az alsóbb rétegbeli kiszolgáló a következővel X-Response-Red:1234válaszolt:X-Response-Red:Blue

A SetResponseHeader gyár hozzáféréssel rendelkezik az elérési útnak vagy gazdagépnek megfelelő URI-változókhoz. Az értékben URI-változók használhatók, a változók pedig futásidőben lesznek kibontva.

Az alábbi példa egy SetResponseHeader változót használó gyárat konfigurál:

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

SetStatus

Az SetStatus előállító konfigurálja a kiszolgálókérés válaszállapotát.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • status: Érvényes Spring-érték HttpStatus , amely egész szám lehet, például 404, vagy az enumerálás sztring-ábrázolása, például NOT_FOUND.

A következő lista egy gyárat SetStatus konfigurál:

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

StripPrefix

A StripPrefix gyár eltávolítja az előtagot a kérésből, mielőtt továbbküldené azt.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • parts: Az elérési út azon részeinek száma, hogy a kérést a továbbküldés előtt eltávolítsa. Az alapértelmezett érték 1.

Az alábbi példa egy StripPrefix gyárat konfigurál:

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

Ebben a példában a kérés az átjárón keresztül történik./name/blue/red A kérés a nameservice következőként nameservice/redjelenik meg: .

Retry

A Retry gyár határozza meg az újrapróbálkozások számát.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • retries: A megkísérlendő újrapróbálkozási kísérletek száma.
  • statuses: Az újrapróbálkozott HTTP-állapotkódok, amelyeket a következővel kell jelölni org.springframework.http.HttpStatus: .
  • methods: Az újrapróbálkozott HTTP-metódusok, amelyeket a következővel kell jelölni org.springframework.http.HttpMethod: .
  • series: Az újrapróbálkozott állapotkódok sorozata, amelyet a következővel org.springframework.http.HttpStatus.Seriesjelöl: .
  • exceptions: Az újrapróbálkozott kivételek listája.
  • backoff: Az újrapróbálkozáshoz konfigurált exponenciális visszalépés. Az újrapróbálkozást a rendszer a visszalépési időköz firstBackoff * (factor ^ n)után hajtja végre, ahol n az iteráció van. Ha maxBackoff konfigurálva van, a maximálisan alkalmazott visszalépés a következőre korlátozódik maxBackoff: . Ha basedOnPreviousValue igaz, a számítás a backoff következővel prevBackoff * factortörténik: .

Ha engedélyezve van, a következő alapértelmezett beállítások vannak konfigurálva a Retry szűrőhöz:

  • retries:Háromszor.
  • series: 5XX sorozat.
  • methods: GET metódus.
  • exceptions: IOException és TimeoutException.
  • backoff:Tiltva.

Az alábbi példa egy Retry gyárat konfigurál:

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

RequestSize

A RequestSize gyár korlátozhatja, hogy a kérelem elérje az alsóbb rétegbeli szolgáltatást, ha a kérelem mérete meghaladja a megengedett korlátot.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • maxSize: Olyan DataSize típus, amelyben az értékek számként vannak definiálva, majd egy választható DataUnit utótag, például KB vagy MB. Az alapértelmezett utótagérték bájtokban van B . Ez a kérelem bájtban definiált megengedett méretkorlátja.

Az alábbi példa egy RequestSize gyárat konfigurál:

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

Ebben a példában, ha a kérést a méret miatt elutasítják, a RequestSize gyár a válasz állapotát 413 Payload Too Large egy másik fejlécre errorMessageállítja be.

Az alábbi példa egy errorMessage:

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

TokenRelay

A TokenRelay gyár továbbít egy hozzáférési jogkivonatot OAuth2 az alsóbb rétegbeli erőforrásoknak. Ez a szűrő az útvonaldefinícióban értékként boolean van konfigurálva, nem pedig explicit szűrőként.

Az alábbi példa egy TokenRelay gyárat konfigurál:

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

Kereskedelmi szűrők használata

A Kuberneteshez készült Spring Cloud Gateway számos egyéni GatewayFilter gyárat is kínál. A következő szakaszok ezeket a gyárakat írják le.

AllowedRequestCookieCount

A AllowedRequestCookieCount gyár a cookie-k száma alapján határozza meg, hogy engedélyezett-e egy egyeztetési kérelem folytatása.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • amount: Az engedélyezett cookie-k száma.

Az alábbi példa egy AllowedRequestCookieCount gyárat konfigurál:

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

AllowedRequestHeadersCount

A AllowedRequestHeadersCount gyár meghatározza, hogy a fejlécek száma alapján engedélyezve van-e egy egyező kérés folytatása.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • amount: Az engedélyezett fejlécek száma.

Az alábbi példa egy AllowedRequestHeadersCount gyárat konfigurál:

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

AllowedRequestQueryParamsCount

A AllowedRequestQueryParamsCount gyár meghatározza, hogy a szám lekérdezési paraméterek alapján engedélyezve van-e egy egyező kérés folytatása.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • amount: Az engedélyezett paraméterek száma.

Az alábbi példa egy AllowedRequestQueryParamsCount gyárat konfigurál:

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

BasicAuth

A BasicAuth gyár hozzáad egy fejlécet BasicAuthAuthorization a kérésekhez.

Ehhez a gyárhoz nincsenek paraméterek.

Az alábbi példa egy BasicAuth gyárat konfigurál:

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

ClaimHeader

A ClaimHeader gyár adatokat másol egy JWT-jogcímből egy HTTP-fejlécbe.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • Claim name: Az átadandó jogcím kis- és nagybetűs neve.
  • Header name: A HTTP-fejléc neve.

Az alábbi példa egy ClaimHeader gyárat konfigurál:

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

ClientCertificateHeader

Az ClientCertificateHeader előállító ellenőrzi a fejléctanúsítványt X-Forwarded-Client-Cert .

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • domain pattern: A X-Forwarded-Client-Cert Kubernetes azon képességének megfelelő érték, amely képes felismerni az ügyféltanúsítvány hitelesítésszolgáltatóját.
  • certificate fingerprint(nem kötelező): A TLS/SSL-tanúsítvány ujjlenyomata.

Az alábbi példa egy ClientCertificateHeader gyárat konfigurál:

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

CORS

A Cors gyár aktiválja a CORS-érvényesítéseket egy útvonalon.

Ez a gyár az alábbi konfigurációs paramétereket fogadja el, amelyek kulcs-érték párokként vannak rendszerezve a CORS-beállításokhoz:

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

Az alábbi példa egy Cors gyárat konfigurál:

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

JsonToXml

A JsonToXml gyár a JSON-válasz törzsét XML-választörzsgé alakítja át.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • wrapper: Az XML-válasz gyökércímkéje, ha egy másik gyökércímke szükséges az érvényes XML létrehozásához. Az alapértelmezett érték response.

Az alábbi példa egy JsonToXml gyárat konfigurál:

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

RateLimit

A RateLimit gyár határozza meg, hogy egy egyező kérés folytatható-e a kérelemkötet alapján.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • request limit: Az ablakban elfogadott kérelmek maximális száma.
  • window duration: Az ablak időtartama ezredmásodpercben. Másik lehetőségként az s, m vagy h utótagokkal megadhatja az időtartamot másodpercben, percben vagy órában.
  • partition source(nem kötelező): A partíciókulcs (claimvagy headerIPs) helye.
  • partition key (nem kötelező): A kérelemszámlálók particionálásához használt érték.

Az alábbi példa egy RateLimit gyárat konfigurál:

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

Az alábbi példák más RateLimit konfigurációkat mutatnak be:

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

A RestrictRequestHeaders gyár meghatározza, hogy a fejlécek alapján engedélyezve van-e egy egyező kérés folytatása.

Ha vannak olyan HTTP-fejlécek, amelyek nem szerepelnek a kis- és nagybetűk érzéketlen headerList konfigurációjában, a rendszer 431 Forbidden error választ ad vissza az ügyfélnek.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • headerList: Az engedélyezett fejlécek nevének kis- és nagybetűs listája.

Az alábbi példa egy RestrictRequestHeaders gyárat konfigurál:

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

RewriteAllResponseHeaders

A RewriteAllResponseHeaders gyár egyszerre több válaszfejlécet is átír.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • pattern to match: A fejlécértékekkel egyező reguláris kifejezés.
  • replacement: A csereérték.

Az alábbi példa egy RewriteAllResponseHeaders gyárat konfigurál:

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

RewriteResponseBody

A RewriteResponseBody gyár módosítja a válasz törzsét.

Ez a gyár a következő konfigurációs paramétereket fogadja el, amelyek a kulcs-érték párok vesszővel tagolt listájaként vannak rendszerezve, ahol minden pár elfogadja az űrlapot pattern to match:replacement:

  • pattern to match: A válasz törzsének szövegével egyező reguláris kifejezés.
  • replacement: A csereérték.

Az alábbi példa egy RewriteResponseBody gyárat konfigurál:

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

RewriteJsonAttributesResponseBody

A RewriteJsonAttributesResponseBody gyár jelöléssel JSONPath írja át a JSON-attribútumokat.

Ez a gyár a következő konfigurációs paramétereket fogadja el, amelyek a kulcs-érték párok vesszővel tagolt listájaként vannak rendszerezve, ahol minden pár elfogadja az űrlapot jsonpath:replacement:

  • jsonpath: A JSONPath válasz törzsével egyező kifejezés.
  • replacement: A csereérték.

Az alábbi példa egy RewriteJsonAttributesResponseBody gyárat konfigurál:

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

Szerepkörök

A Roles gyár engedélyezi azokat a kéréseket, amelyek az egyik konfigurált szerepkört tartalmazzák.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • roles: Az engedélyezett szerepkörök vesszővel tagolt listája.

Az alábbi példa egy Roles gyárat konfigurál:

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

Hatókörök

A Scopes gyár engedélyezi a konfigurált OAuth hatókörök egyikét tartalmazó kérelmeket.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • scopes: Az engedélyezett OAuth hatókörök vesszővel tagolt listája.

Az alábbi példa egy Scopes gyárat konfigurál:

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

StoreIpAddress

A StoreIPAddress gyár csak bővítményfejlesztéshez és az alkalmazás kontextusában használható.

Ez a gyár a következő konfigurációs paramétert fogadja el:

  • attribute name: Az IP-cím exchange attribútumként való tárolására használt név.

Az alábbi példa egy StoreIPAddress gyárat konfigurál:

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

Egyszeri bejelentkezés

A SSO login gyár átirányítja a hitelesítést, ha nincs érvényes engedélyezési jogkivonat. Ez a gyár az útvonaldefinícióban értékként boolean van konfigurálva, nem pedig explicit szűrőként.

Az alábbi példa egy SSO login gyárat konfigurál:

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

StoreHeader

A StoreHeader gyár egy fejlécértéket tárol az alkalmazás kontextusában. Ez a szűrő csak bővítményfejlesztéshez használható.

Ez a gyár a következő konfigurációs paramétereket fogadja el:

  • headers: Az ellenőrizni kívánt fejlécek listája. A rendszer az első találtat használja.
  • attribute name: A fejléc értékének exchange attribútumként való tárolására használt név.

Az alábbi példa egy StoreHeader gyárat konfigurál:

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

XmlToJson

A XmlToJson gyár az XML-válasz törzsét JSON-választörzsgé alakítja át.

Ehhez a gyárhoz nincsenek paraméterek.

Az alábbi példa egy XmlToJson gyárat konfigurál:

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

Következő lépések