okhttp — Подпись запроса, которую мы рассчитали, не совпадает с предоставленной вами подписью

#amazon-web-services

Вопрос:

Используя OkHttp, я пытаюсь сделать аутентифицированный запрос.

Я получил «X-Amz-Дата», «x-amz-токен безопасности», «Авторизация» и «Хост» из заголовков, используя AWS4Signer, и передаю их в заголовках запроса:

     MediaType mediaType = MediaType.get("application/json; charset=utf-8");
    RequestBody body = RequestBody.create(mediaType, "");
    Request request = new Request.Builder()
            .url(url)
            .header("Content-Type", "application/json")
            .header("X-Amz-Date", x_date)
            .header("x-amz-security-token", x_token)
            .header("Authorization", authorization)
            .header("Host", host)
            .method("POST", body)
            .build();
 

Ошибка, которую я получаю, заключается в:

 response failed: {"message":"The request signature we calculated does not match the signature you provided. 
Check your AWS Secret Access Key and signing method. Consult the service documentation for details.nn

The Canonical String for this request should have been
'POST
/v1/covers/6caf8ga6-f4e7-4e57-bsf4-8d60afaed7b/like

host:api.dev.sapps.com
x-amz-date:20210701T151324Z
x-amz-security-token:IQdOb3JpF68oXsdjEOj//////////wEa/****ytbWT5XFu4VboP x0s7tGNqewJql

host;x-amz-date;x-amz-security-token
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'

The String-to-Sign should have been
'AWS4-HMAC-SHA256
20210701T151324Z
20210701/us-east-1/execute-api/aws4_request
8326d974985e29b4734726ab40b38d1dda5ba3ff53b6802625da5ab1620b23cce'n"}
 

Есть идеи, как это исправить?