在我的有限测试中,似乎默认情况下没有签署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)
});
}
我似乎记得找到一些文件,说明尸体没有签名,但我再也找不到参考了。
我真的不相信我的测试,所以我想找到一个明确说明任何一种方式的参考。
答案 0 :(得分:1)
签名正文始终是签名版本4的一部分。
Canonical Request中的最后一行 - 它是实际签名过程输入的一个组成部分 - 是“请求有效载荷”的小写,十六进制编码的SHA-256哈希值 - 是,身体。如果正文为空,则使用空字符串(e3b0c44298...
)的SHA-256。
因此,与签名标题不同 - 如果它们包含在签名中,它们会在请求中列出 - 主体始终是签名的。