Enrichir un flux sans toucher l'amont
Remodeler un flux sans toucher au service.
Une politique nommée, conditionnée, attachée à un hôte ou à une opération ajoute un en-tête, masque un champ, met une réponse en cache ou consulte un service de décision. Le service derrière ne change pas.
Le trajet
- NommerUne politique déclarée une fois, réutilisée
- ConditionnerUne condition CEL, compilée au chargement : fausse, la politique est sautée
- AttacherÀ la passerelle, à un hôte, à une route ou à une opération
- SimulerLa chaîne vérifiée à blanc avant de servir
Une condition invalide ou un élément protégé réécrit est refusé au chargement : l'erreur se voit avant la production. À l'exécution, une condition fausse saute la politique ; un service de décision qui répond deny donne un 403.
Configuration
L'exemple transformations, tel qu'il est livré avec Flexway v1.6.3.
# Enriching a flow without touching the upstream: named policies, a CEL condition, composed
# global -> host -> routes -> operation, the most precise wins, `!name` removes.
version: 1
contracts:
openapi: ./openapi.yaml
upstreams:
default:
url: http://orders.internal:8080
auth:
issuers:
- name: customers
discovery: https://login.example.net/.well-known/openid-configuration
audience: api
policies:
definitions:
plan-header:
type: header-inject
when: "has(auth.subject)" # CEL: authenticated callers only
config:
set: { x-plan: "{{ auth.claims.plan }}", x-operation: "{{ route.operation_id }}" }
on_missing: skip # skip | empty | fail - required for an expression
strip-server:
type: header-remove
phase: response # on what the upstream answers
config: { names: [server, x-powered-by] }
v2-path:
type: rewrite-path # the upstream's path, never the served one
config: { to: "/v2/orders/{id}" }
channel:
type: query-inject
config: { set: { channel: gateway } }
chains:
global: [strip-server]
routes:
"/orders/*": [v2-path, channel] # * one segment, ** any numberFonctionnalités
Ce qui est livré dans la version publiée v1.6.3, et ce qui vient ; une fonctionnalité n'est jamais présentée comme livrée avant sa version.
| Fonctionnalité | Statut |
|---|---|
| En-têtes de requête et de réponse : poser, retirer, renommer, dériver | Livré · v0.1.0 |
| Réécriture de chemin et paramètres de requête | Livré · v0.1.0 |
| Projection et filtrage de champs du corps, conformité au schéma vérifiée | Livré · v1.1.0 |
| Masquage de champs sensibles en réponse | Livré · v1.1.0 |
| Respect de Cache-Control, ETag et Vary de l'amont | Livré · v1.1.0 |
| Cache de réponses publiques, par opération | Livré · v1.1.0 |
| Appel externe : budget de délai et comportement de panne déclaré | Livré · v1.1.0 |
| Simulation à blanc d'une chaîne de politiques | Livré · v0.1.0 |
Pour aller plus loin
Parlons de votre passerelle
Flexwiz est une jeune entreprise : vous parlez directement avec la personne qui la fonde. Dites-nous ce que vous voulez faire passer par Flexway. Nous parlons de votre infrastructure et de vos exigences de souveraineté numérique.
La prise de rendez-vous en ligne arrive bientôt ; d'ici là, un e-mail suffit.