Я использую 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.