Node.js 从cloudfront获取缺少的密钥对Id查询参数或cookie值错误
使用cloudfront使用签名cookie从s3 bucket提供私有内容。 我能够生成cookie,但当我请求资源时,我会从node.js甚至任何客户端/浏览器/邮递员处得到缺少的密钥对Id查询参数或cookie值错误Node.js 从cloudfront获取缺少的密钥对Id查询参数或cookie值错误,node.js,amazon-cloudfront,amazon-signed-cookie,Node.js,Amazon Cloudfront,Amazon Signed Cookie,使用cloudfront使用签名cookie从s3 bucket提供私有内容。 我能够生成cookie,但当我请求资源时,我会从node.js甚至任何客户端/浏览器/邮递员处得到缺少的密钥对Id查询参数或cookie值错误 const cloudFront = new AWS.CloudFront.Signer( fs.readFileSync('./rsa-APKAIQSVJ2R3T6PYTOUQ.pem', 'utf8'), fs.readFileSync('./pk-APKAIQS
const cloudFront = new AWS.CloudFront.Signer(
fs.readFileSync('./rsa-APKAIQSVJ2R3T6PYTOUQ.pem', 'utf8'),
fs.readFileSync('./pk-APKAIQSVJ2R3T6PYTOUQ.pem', 'utf8')
);
const policy = JSON.stringify({
Statement: [{
Resource: 'http*://d2q89b5pewg0ry.cloudfront.net/images/',
Condition: {
DateLessThan: {
'AWS:EpochTime': Math.floor(new Date().getTime() / 1000) + 60 * 60 * 3
}
},
}]
});
const cookie = cloudFront.getSignedCookie({
policy: policy
});
let cookieString = '';
for(var cookieKey in cookie)
{
cookieString += cookieKey + '=' + cookie[cookieKey] + ";";
}
return axios.get('https://d2q89b5pewg0ry.cloudfront.net/images/hikup.jpg',{
headers: {
Cookie: cookieString
}
}).then((response) => {
return response;
}).catch((error) => {
return error;
});
您没有使用完整构造函数,请检查以下内容: Cookie应具有3个键及其值:
CloudFront-Expires
CloudFront-Signature
CloudFront-Key-Pair-Id
在发出请求时,还需要添加cookie/key CloudFront密钥对Id=APKAIQSVJ2R3T6PYTOUQ
CloudFront密钥对Id不是公钥,它只是Id(如访问密钥Id),因此CloudFront可以看到解密签名所需的公钥。CloudFront上最多可以有2个密钥处于活动状态,您可以使用私钥和公钥创建签名,当CloudFront收到请求时,它会检查CloudFront密钥对Id,以了解应该使用哪个公钥,因此故事结束,CloudFront密钥对Id是您登录AWS控制台并转到安全凭据并单击CloudFront密钥对时的Id,您将看到一个访问密钥Id,这是您需要定义的Id。(与文件名相同)生成的cookie与您提到的3个键值对相同,但仍然存在错误,对于getSignedCookie方法,回调不是强制性的。这就是我正在做的,迭代所有3个cookie(键值)然后发送请求是否可以提供生成的cookie示例?CloudFront密钥对Id:“MIIBIjANBgkqhkiG9w0BAQEFAAOC…”CloudFront策略:“eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlI…”