Spring WebClient не может прочитать тело запроса перед отправкой с ExchangeFilterFunction - PullRequest
1 голос
/ 10 апреля 2019

Все время я использовал RestTemplate и решил переключиться на WebClient.

Перед отправкой запроса я подписываю тело запроса закрытым ключом, а клиент проверяет запрос открытым ключом.

Мой перехватчик:

private static class SignatureClientHttpRequestInterceptor implements ClientHttpRequestInterceptor {

    private final PrivateKey privateKey;

    private SignatureClientHttpRequestInterceptor(String privateKeyLocation) {
        this.privateKey = PemUtils.getPrivateKey(Paths.get(privateKeyLocation));
    }

    @Override
    public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
        if (request.getMethod() == HttpMethod.POST) {
            request.getHeaders().add("X-Signature", Base64.getEncoder().encodeToString(PemUtils.signData(privateKey, SignatureAlgorithm.RS256.getJcaName(), body)));
        }
        return execution.execute(request, body);
    }
}

Но в WebClient я не нашел такой возможности в ExchangeFilterFunction.

Есть ли возможность сделать это в WebClient или я должен вручную подписать тело запроса перед отправкой?

...