在改造中访问aws-api-gateway时,请求签名不匹配

时间:2019-02-07 07:36:22

标签: java android amazon-web-services retrofit aws-api-gateway

我已经使用okhttp-aws-signer库对aws请求进行签名,并使用Android上的Retrofit 2传递了它。我也在lib资源库上问这个问题 https://github.com/babbel/okhttp-aws-signer/issues/1

每次进行Retrofit API调用时都会出错。秘密和访问密钥很好,因为它与Postman一起使用。库在Kotlin中,我的应用程序在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 Secret Access密钥和签名方法。有关详细信息,请参阅服务文档...

0 个答案:

没有答案