默认情况下是否签署了对AWS API Gateway的Sig4请求的正文?

时间:2017-03-25 22:37:44

标签: amazon-web-services aws-api-gateway

在我的有限测试中,似乎默认情况下没有签署API网关的请求(下面)。

这是用于调用API的代码:

testAPI: function(id_token, access_key, secret_key, session, name, pass) {

let apigClient = awsApiGatewayClient.newClient({
invokeUrl: 'https://sdf523lkas.execute-api.ap-southeast-2.amazonaws.com/', // api url
accessKey: access_key, 
secretKey: secret_key, 
sessionToken: session, 
region: 'ap-southeast-2'
});

let method = 'POST'
let pathTemplate = api.createRDSPath
let params = {}
let additionalParams = {
  headers: {
    myHeader: 'this is my header' // Check if custom header is signed
  }
}

let body = { // Check if body is signed
  name: "name",
  pass: "pass",
}

// Send Request
apigClient.invokeApi(params, pathTemplate, method, additionalParams, body)
.then(function(result){
    console.log(result)
}).catch( function(result){
    console.log(result)
});
}

我似乎记得找到一些文件,说明尸体没有签名,但我再也找不到参考了。

我真的不相信我的测试,所以我想找到一个明确说明任何一种方式的参考。

1 个答案:

答案 0 :(得分:1)

签名正文始终是签名版本4的一部分。

Canonical Request中的最后一行 - 它是实际签名过程输入的一个组成部分 - 是“请求有效载荷”的小写,十六进制编码的SHA-256哈希值 - 是,身体。如果正文为空,则使用空字符串e3b0c44298...)的SHA-256。

因此,与签名标题不同 - 如果它们包含在签名中,它们会在请求中列出 - 主体始终是签名的。