问题标签 [pre-signed-url]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
186 浏览

google-cloud-storage - 通过签名的 url 确定存储桶对象的可用性

我们的下载托管在 Google Cloud Storage 上。一段时间以来,我们一直在按需创建签名 URL(当用户单击下载按钮时),然后将用户重定向到该 URL。

这段代码已经投入生产好几个月了,但最近我们注意到有一个竞争条件:有时 URL 还没有准备好。在此之前,尝试访问签名的 URL 会导致403: Forbidden.

我们试图通过发送 HEAD 请求来轮询 URL 是否准备好,寻找 200 响应来缓解这种情况。这似乎是一个很好的解决方案,直到我们意识到偶尔存在第三种状态:URL 已创建,但尚未准备好。我们的 HEAD 收到了200 Success包含以下 XML 文档的响应:

该 URL 将在几秒钟后变为可用。有关创建签名 URL 的文档没有讨论它没有立即准备好的可能性。

我的问题:您应该如何确定新创建的签名 URL 何时可以使用?

编辑

几个月来,我们实际上一直在使用 URL 生成代码(并且运行良好)。直到最近两周,我们才注意到我们使用了备用机制(即 URL 尚未准备好)。这几乎就像谷歌在上个月更改了代码,在 URL 准备好时引入了延迟。直到现在,比赛条件甚至都不明显。

0 投票
1 回答
1480 浏览

google-cloud-storage - 带有签名网址的 Google 存储

如何mutlipart/formdata ---boundaryString 使用谷歌存储的签名 url上传内容类型的文件?

我面临的问题是当我们使用浏览器上传文件时,浏览器将内容类型放在mutlipart/formdata ---boundaryString 哪里boundaryString是内容类型标头值的动态部分。

现在由于谷歌签名方法要求内容类型是签名的一部分。生成一个签名的 url 变得不可能了。

0 投票
1 回答
1052 浏览

java - 为什么 AWS 不信任其自己的 SDK 生成的预签名 URL

我正在编写用于从 AWS S3 下载对象的预签名 URL。我使用 AWS Java SDK 中的 generatePresignedUrl 方法。但是,在使用生成的预签名 URL 发出 GET 请求时,我从 AWS 获得 SignatureDoesNotMatch。我很困惑,因为我使用官方 SDK 中的方法来生成它和一个非常简单的 GET 请求,但没有运气。非常感谢任何帮助!

代码(取自AWS 文档):

我用于连接 AWS S3 的凭据经过测试;我能够使用来自 AWS SDK 的相同凭证和 S3 下载方法下载 S3 对象。但是我从 AWS 获得的对组合 URL 的响应(例如,https://ozland.s3.amazonaws.com/1865b563cdc94fa28ef41ee0b9b0e608?AWSAccessKeyId= ...AWSAccessKeyId...&Expires=1471300223&Signature=pbgcRB0Zg%2B3iicDQQbVX%2FqdNAAc%3D )从上面是:

问题是为什么上面的 response.StringToSign 与 AWS docs ( AWS docs )描述它的方式不同。特别是,根据文档,我希望 StringToSign 像:

aws-tools非常适合我使用完全相同的 S3 存储桶和凭据生成预签名 URL。但是为什么我还是在这里得到 SignatureDoesNotMatch 呢?

谢谢!

0 投票
1 回答
14468 浏览

amazon-web-services - X-Amz-Expires 是向 AWS 请求的必需标头/参数吗?

  1. X-Amz-Expires必需的标头/参数吗?官方文档不一致,在某些示例中使用它,而在其他示例中则没有。

  2. 如果不需要,签名请求的默认过期值是多少?它是否等于X-Amz-Expires参数的最大可能值,即604800(7 天)

  3. 文档(请参阅上面的链接)X-Amz-Expires仅在查询字符串中传递签名参数的上下文中讨论参数。如果X-Amz-Expires需要参数,是否只需要在查询字符串中传递签名参数(而不是通过授权标头传递它们)?


更新:

AWS 安全流程简介论文,第 17 页说

请求必须在请求时间戳的 15 分钟内到达 AWS。否则,AWS 会拒绝该请求。

现在我们在这里谈论什么时间戳?我的猜测是X-Amz-Date。如果我是对的,那么就会出现另一个问题:

  1. X-Amz-Date和参数如何X-Amz-Expires相互关联?对我来说,如果不存在,这听起来像是请求过期算法从X-Amz-Date时间戳回落到 15 分钟。X-Amz-Expire
0 投票
0 回答
287 浏览

javascript - Javascript AWS-SDK 为特定 IP 地址生成签名下载 url

目前我正在使用 Javascript AWS-SDK 为 S3 存储桶中的对象生成签名的下载 url,但是我还想通过 ip 地址限制签名的 url。这可能吗?IE 如果用户获得特定文件的signedUrl,他们应该只能在特定IP 上使用该链接。我没有使用云端。

0 投票
1 回答
687 浏览

google-cloud-storage - 存储桶中带有子文件夹的 GCS 签名 URL

我有一个带有子文件夹结构的存储桶来添加媒体,例如 bucket/Org1/ ... bucket/Org2/ ... ,我想为每个子文件夹内的所有媒体生成一个签名的 url,因此属于组织 1 的用户只能查看他们的文件。

当然,我不想为每个文件生成一个签名的 url(可能很多)并且也ACL不起作用,因为我的用户使用非谷歌帐户登录(并且可以没有)

所以有什么办法可以让like bucket/Org1/*

0 投票
1 回答
403 浏览

ruby - Aws::S3::Presigner presigned_url 返回 403 禁止使用 virtual_host

我正在尝试在静态网站托管的 S3 存储桶上创建一个私有对象,该存储桶可从签名 URL 访问。看起来很简单,但是使用virtual_host启用的以下代码似乎总是会导致 403 Forbidden。如果我禁用virtual_host,那么它会按预期工作。

是否缺少使此工作的权限/设置?

0 投票
1 回答
3791 浏览

javascript - 如何制作过期/签名视频嵌入网址

我是新手,正在学习网络开发等等。我只知道如何将我的视频嵌入网站,任何菜鸟都可以轻松获得源代码,他们也可以嵌入它。但在许多网站中,视频 src 使用重定向链接进行编码,例如:https ://redirector.googlevideo.com/videoplayback?requiressl=yes&id=0c5d32687bb8e7fd&itag=18&source=webdrive&ttl=transient&app=explorer&ip=2604:a880:0:1010 ::dc7:d001&ipbits=32&expire=1481329545&sparams=requiressl%2Cid%2Citag%2Csource%2Cttl%2Cip%2Cipbits%2Cexpire&signature=8094D8DEF3C98784DC5561980B5725379B61A804.4C63CCB219699C4A2C02FB2606425E50243F8D36&key=ck2&mm=31&mn=sn-ab5l6ne6&ms=au&mt=1481314943&mv=m&nh=IgpwcjA0LmxnYTA3KgkxMjcuMC4wLjE&pl=48

它会在一段时间后到期,在这种情况下是一天。我了解到这是一个签名的网址。

所以,我想知道如何创建这样的签名网址。请不要提供任何插件名称,因为我不是付费用户,也不是我只使用博主的任何东西。我只是想学习如何用 javascript 编写代码。

简而言之,我想说,我嵌入的 youtube 视频的来源是一个签名的 url,它在一小时后过期,并且当网站刷新时,来源应该不断变化。

0 投票
1 回答
1170 浏览

node.js - Lambda:Amazon s3 直接上传错误签名不匹配

我想使用预签名的 URL 将图像文件上传到 AWS s3 存储桶,但是屏幕截图中显示了一个错误,我已经按照此页面s3 direct file upload的帖子进行操作,我想知道什么我正在犯的错误,我也想知道这是否是服务器端问题,或者我应该使用一些不同的方法来向“预签名”URL 发出 put 请求,谢谢。

错误我上邮递员

我的 serverless.yml

我的处理程序文件

0 投票
0 回答
866 浏览

amazon-web-services - 如何使用预签名 URL 在 Amazon S3 中上传文件

Amazan S3和许多类似的开源 CDN 服务器中,Minio有一个功能叫做presigned URL让没有凭据信息的用户下载/上传文件。但是上传文件有一个小问题。一般情况是:

  1. 我们将预签名的 URL 传递给客户端
  2. 客户端将文件上传到 Amazon s3
  3. 客户端通知服务器文件已上传。

但在那之后,客户端可以上传文件并覆盖它们,直到预签名 URL 的到期时间。因此,在 URL 过期之前,我们不能信任 S3 服务器中的任何文件。这是不可取的!

如何解决这个问题呢?