gpt4 book ai didi

javascript - 使用 Node 签署 AWS API Gateway 请求

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:02 27 4
gpt4 key购买 nike

我一直在寻找方法来限制对使用 JavaScript 编写的 AWS Lambda 函数创建的 API 的访问。

我找到了有关如何使用 AWS Signature S4 的文档,但我仍然不明白。

根据creating a signature ,应用伪代码后,我应该将签名放置在 header 上。

我发现以下代码可以解决这一点:

// Example of signature generator

var crypto = require("crypto-js");

function getSignatureKey(Crypto, key, dateStamp, regionName, serviceName) {
var kDate = Crypto.HmacSHA256(dateStamp, "AWS4" + key);
var kRegion = Crypto.HmacSHA256(regionName, kDate);
var kService = Crypto.HmacSHA256(serviceName, kRegion);
var kSigning = Crypto.HmacSHA256("aws4_request", kService);
return kSigning;
}

console.log(getSignatureKey(crypto,'secretkey','date','us-east-2','iam'));

这是我的第一个问题,我不知道 getSignatureKey() 的输出应该是什么?这是因为在文档上它是一个非常长的字符串,而我得到的输出是 {words:[x,x,x,x,x,x,x,x],sigBytes: 32},其中 x 是随机数。

此外,在获取签名并在请求头中填充“授权”字段等后,如何过滤不正当的请求?我是否必须为 AWS API 创建策略,使其仅允许签名请求?在这里我想我应该遵循Signing Requests .

谢谢!

最佳答案

这是签名 URL 的简单实现。 aws-cloudfront-sign 包提供了更简单的实现。

var cfsign = require('aws-cloudfront-sign');

var signingParams = {
keypairId: process.env.PUBLIC_KEY,
privateKeyString: process.env.PRIVATE_KEY,
// Optional - this can be used as an alternative to privateKeyString
privateKeyPath: '/path/to/private/key',
expireTime: 1426625464599
}

// Generating a signed URL
var signedUrl = cfsign.getSignedUrl(
'http://example.cloudfront.net/path/to/s3/object',
signingParams
);

https://aws.amazon.com/blogs/developer/creating-amazon-cloudfront-signed-urls-in-node-js/

SignedURL 的目的是提供私有(private)内容。

更多详细信息,

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

希望有帮助。

关于javascript - 使用 Node 签署 AWS API Gateway 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859687/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com