Подпись запроса не совпадает, когда доступ к aws-api-gateway на Retrofit - PullRequest
0 голосов
/ 07 февраля 2019

Я использовал библиотеку okhttp-aws-signer, чтобы подписывать запросы aws и передавать их с помощью Retrofit 2 на Android.Я также спрашиваю об этой проблеме в репозитории lib https://github.com/babbel/okhttp-aws-signer/issues/1

У меня каждый раз появляется ошибка при вызове Retrofit API.Секрет и ключи доступа хороши тем, что работают с почтальоном.Библиотека находится в Котлине, а мое приложение на Java, но я думаю, что это не имеет значения, верно?Можете ли вы сказать, что не так?

public class AwsSigingHeaderInterceptor implements Interceptor 

@Override
public Response intercept(Chain chain) throws IOException {


Request request = chain.request();
Request newrequest = request.newBuilder()
        .cacheControl(CacheControl.FORCE_NETWORK)
        .addHeader("Method", "POST")
        .addHeader("Host", request.url().host())
        .addHeader("X-Amz-Date", DateUtil.getAwsDate())
        .addHeader("Accept", Constants.ACCEPT)
        .addHeader("Content-Type", Constants.CONTENT_TYPE_JSON).build();


OkHttpAwsV4Signer okHttpAwsV4Signer = new OkHttpAwsV4Signer(Constants.REGION, Constants.SERVICE_NAME);

newrequest = okHttpAwsV4Signer.sign(newrequest, Constants.ACCESS_KEY_ID, Constants.ACCESS_SECRET_KEY);


return chain.proceed(newrequest);
}

}

Это упакованный заголовок Ключ авторизации, упакованный с указанным подписавшим для aws.

Authorization: AWS4-HMAC-SHA256 Credential=AKIAIR5PPPODHO6F2NCA/20190207/us-east-1/execute-api/aws4_request, SignedHeaders=accept;cache-control;content-type;host;method;x-amz-date, Signature=5521d5b220cb427ddbcbad5f9bda6bd69043c779e67999d3ee92957e45112479

Это ошибка, которую я получил, я должен получитьнекоторый объект JSON.

{"message": "Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой секретный ключ доступа AWS и метод подписи. За подробной информацией обратитесь к документации по обслуживанию..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...