Фильтрация запросов в зависимости от тела и заголовка запроса (Spring Cloud Gateway) - PullRequest
0 голосов
/ 29 октября 2018

Я использую Spring Cloud Gateway 2.1.0.M1 (и Spring Security 5.1.0.RC2).

Проблема заключается в следующем: как реализовать GlobalFilter (для запросов POST, выполняемых до вызова внутреннего интерфейса), который читает тело запроса и заголовки и на основании этого решает выполнить одно из следующих действий:

  • продолжить обмен, отправив неизменный запрос на сервер,
  • отклонить запрос и вернуть HTTP 401.

Что мне неясно, так это как правильно получить полное тело запроса, а затем либо return chain.filter(...), либо exchange.getResponse.setStatusCode(401) и return exchange.getResponse().setComplete().

Для немного контекста более высокого уровня - цель состоит в том, чтобы проверить отдельную подпись JWS , где тело запроса - полезная нагрузка и отдельная подпись находится в одном из заголовков. Если подпись действительна, шлюз должен передать запрос. В противном случае он потерпит неудачу.

Я бы также остался доволен решением, отличным от реализации фильтра Spring Cloud Gateway.

...