【问题标题】:Converting an s3 bucket policy to base64 from JSON in node.js在 node.js 中将 s3 存储桶策略从 JSON 转换为 base64
【发布时间】:2017-12-16 00:54:52
【问题描述】:

我正在尝试在 node.js 中的 base64 中对 Amazon s3 存储桶策略进行编码以用于签名(更具体地说是 StringToSign),但似乎无法正确获取代码。

我使用亚马逊提供的默认策略进行测试,因为它们提供了正确的 base64 编码。 (The example given by amazon)

他们的输出是eyAiZXhwaXJhdGlvbiI6ICIyMDE1........(保持简短,因为它很长)

我不断收到eyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx.....

我的生成代码是:

var policyString = JSON.stringify(policy)
var policyBytes = utf8.encode(policyString)
var stringToSign = base64.encode(policyBytes)

其中policy 是一个以JSON 格式保存亚马逊政策的变量,utf8base64 是节点模块。

这听起来像是一个新手问题,但我已经盯着它看了一段时间了,任何帮助都将不胜感激!

【问题讨论】:

标签: javascript node.js amazon-web-services amazon-s3 base64


【解决方案1】:

我解码了你提供的当前部分值

eyAiZXhwaXJhdGlvbiI6ICIyMDE1
eyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx

各自的输出是:

{ "expiration": "2015
{"expiration":"2015-12-30T1

如您所见,您在policyString 中删除了一些空格。这就是你得到不同输出的原因

【讨论】:

  • 就是这样!它是由 JSON.stringify() 引起的。我改为将政策放在一行中,并用单引号括起来。
  • 太棒了。除了接受答案,如果有帮助,点赞会送出一些爱:)
  • @blongo 你是什么意思你把策略放在一行上并用单引号括起来?你可以说得更详细点吗?您是说通过将对象括在单引号中来使对象成为字符串吗?比如... Buffer.from('${obj_here}').toString('base64')
猜你喜欢
  • 1970-01-01
  • 2020-10-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 2021-01-19
  • 2021-03-31
相关资源
最近更新 更多