问题标签 [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 投票
1 回答
3100 浏览

python - 如何在 Google Cloud Function 中生成链接到特定存储桶 GCS 的预签名 URL?

如何将使用服务帐户生成的私钥文件添加到云功能进行身份验证?

以下代码返回一个身份验证凭据错误,它说我需要一个私钥来签署凭据。我如何创建它并传入云功能?

0 投票
2 回答
168 浏览

http - 重定向到签名云存储 URL(cURL?)的问题

我正在创建一个 Firebase HTTP 函数,该函数将文件上传到 Cloud Storage,为该文件创建一个签名 URL,然后将客户端重定向到该 URL。使用 Postman 并打开自动重定向跟踪,可以正确检索文件。但是,如果我在使用 cURL ( ) 时尝试打开重定向curl -L -H "Content-Type: application/json" "https://us-central1-example.cloudfunctions.net/exampleFunction" -d '{"example": true}',Cloud Storage 会返回以下错误:

如果我使用表单编码数据发出请求,它也可以在 cURL 中使用:curl -L "https://us-central1-example.cloudfunctions.net/exampleFunction" -d "example=true"

如果我尝试手动向 Postman 中的 URL 发出 GET 请求,则会收到等效错误:

如果我将 URL 粘贴到浏览器中或使用 cURL 下载签名的 URL,则文件也会正确下载。

我正在使用以下函数来获取签名的 url:

它返回以下格式的签名 URL:( https://storage.googleapis.com/example.appspot.com/exampleBucket/exampleFile.txt?GoogleAccessId=[Access ID]&Expires=1602246219&Signature=[Signature]我注意到“Expires”的值与标签中返回的值相同)。

我怀疑 Postman 和 cURL 在请求中添加了一些内容,导致签名不同,但我不确定到底发生了什么。

当让 cURL 跟随重定向或在 Postman 中创建 GET 请求时会发生什么,这会导致签名的这种差异?

0 投票
1 回答
82 浏览

kubernetes - 将节点js代码部署到谷歌kubernetes引擎后出现signingError

我正在使用 getSignedUrl 获取视频的公共认证 url。它在我的本地机器上运行良好。但在 GKE 中部署后,它无法正常工作。我已经使用 Firebase getSignedUrl()检查了有关 SigningError 的相关问题。但我没有看到 GKE 的服务帐户来配置这些角色。在创建 kubernetes 线索者时,我已经为集群分配了完整的存储和服务启用权限。

我是否必须添加更多权限才能消除此错误,还是应该执行其他任何操作。

0 投票
1 回答
77 浏览

google-cloud-platform - 谷歌云负载均衡器动态添加后端存储桶

目标:例如,用户可以创建具有图像、视频等资源的课程。我想使用签名的 cookie 限制对它们的访问。即 /courses/1 上的资源只能由拥有有效签名 cookie 的登录用户访问。

背景 我将根据https://cloud.google.com/storage/docs/access-control#recommended_bucket_architecture为每门课程创建一个媒体文件桶。

我被困在哪里

那么有没有一种标准的方法来做这些,或者我认为整个架构是错误的,因为如果没有自动化就无法扩展?

0 投票
1 回答
231 浏览

amazon-web-services - aws cloudfront 签名的 url 和 mediapackage

我正在使用 aws mediapackage 和 aws cloudfront 来提供视频点播服务。由于安全原因,我在 mediapackage 中为我的打包组获得了 cdn 授权,它可以正常工作,这意味着所有资产只能从云端获得。但为了提高安全性,我需要使用签名的 url 来限制访问。当我在云端控制台中启用此功能时,限制工作正常,我的网址返回 403 禁止。当我签署一个 url 时,我不会收到 403,但问题是流媒体不再工作了。这意味着我的浏览器控制台中有以下错误:

从源“127.0.0.1:8000”访问“https://xxxxxxxxxx.cloudfront.net/out/v1/xxxxxxxxxxxxxxx.m3u8”的 XMLHttpRequest 已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头存在于请求的资源上。

0 投票
0 回答
64 浏览

go - 上传签名的 URL 永远不会收到响应/卡住

我使用 V4 方法为 GCS Bucket 生成上传签名 URL。

要生成我的签名 URL,我使用 go 存储包:https ://cloud.google.com/storage/docs/access-control/signing-urls-with-helpers#storage-signed-url-object-go

这是我的代码:

我使用 cURL 上传我的文件,如下所示:

它适用于某些文件(PNG、JPEG、JSON 等),但对于一些随机文件,我的 curl 永远不会收到响应并无限期地等待。我尝试失眠,以防我的 cURL 客户端出现问题,但我有相同的模式。

知道为什么吗?我想文件是原因,但我不知道为什么,以及如何检查。

0 投票
0 回答
77 浏览

android - Android 无法使用签名的 url 将文件上传到谷歌云存储

我正在尝试使用后端服务器生成的签名 url 将文件上传到谷歌云存储,它给出了这个错误

SignatureDoesNotMatch我们计算的请求签名与您提供的签名不匹配。检查您的 Google 密钥和签名方法。PUT

我正在使用带有 multipart 的 okhttp put 请求来上传这样的文件

服务器生成的签名 url 如下所示

https://storage.googleapis.com/bucket_name/r1m767lcbtxnuu34hu9klrljf65q?GoogleAccessId=***************************&Expires=1926666331&Signature=yZmRFP%2BrvtsSy8AX %2F1eug2GN0wn%2BcrZVdHpICV5e%2F6ww0ioNusnEvk8G1u9oGmm3tE0XFr5rpiZ2q3hZ0%2BWx7dcOJlX95arXl1tiqV3p7ZO5qhRr1ZE3JkU1reNZF1yrQQVJiTgBy5mQTtXbWolAKbeo3JITY6ah3AMy%2FbpuGMpwr3vaNUM8HcbqOjPC%2FeWUrqGK3G57SKhz35OX6FK4SEAGNVauM7568L%2FT9h8DJLLr5QiyUgHXqNQjlBFuedI9CXaPthB3A086aDETNWhwtAS1h5vSGFTEy36thv6subXJZwC2vRNUfSEZxGA9hv0upwovJOVLsetipeIhBiXNJQ%3D%3D

0 投票
1 回答
921 浏览

python - 如何在 Python 中使用签名 URL 上传到 Google 存储桶?

我能够创建签名的 URL,只需要知道创建后如何处理它们。

有几个使用 Javascript 通过签名 URL 上传的示例,但我在 Python 中找不到任何示例。我正在尝试使用签名 URL 作为 Google App Engine 为我的 Flask 应用程序施加的 32 MB 限制的解决方法。

这是我的 python app.py 脚本(这里不是我的应用程序的全部功能,只是试图成功上传到我的存储桶):

这是我用来创建签名 URL 的函数:

下面是我的home.html:

根据我在这里研究的内容,我尝试上传到的存储桶的 CORS 配置:

生成的签名 URL 是否以 html 形式出现?它需要进入我的upload_file函数吗?

最后,当我将签名的 URL 粘贴到浏览器中时,它会显示以下错误:

这是我的第一个 SO 问题,所以如果构造不当,我深表歉意。我对 GCP 非常迷茫和陌生。我已经搜索了一段时间,但没有找到 Python/Flask 的用例,我可以在其中看到签名的 URL 是如何合并到文件上传过程中的。

同样,我正在 Google App Engine flex 上构建一个 webapp,并且需要签名 URL 来解决 32 MB 文件上传限制。

更新

在意识到我需要简单地向签名的 URL 发出请求后,我得到了签名的 URL 组件。

下面是我在 App Engine 中加载的新脚本(导入和“if name = main ...”为下面的片段删除)。

上面的代码仍然抛出 413 entity too large 错误。我认为这是因为即使我正在创建签名 URL,我也通过 App Engine 获得了“POST”。我需要如何重新安排/我做错了什么?如何构建代码以让用户通过签名 URL 直接上传到 Google Cloud Storage 并避免触发 413 entity too large 错误?

0 投票
1 回答
34 浏览

amazon-s3 - 具有过期日期的 Cloudfront 签名 URL 在我的应用程序中有效,但在浏览器中无效

在我的 Java 后端,每次我的前端加载/重新加载时,我都会生成一个新的签名 URL。出于测试目的,我对到期日期进行了硬编码。过期日期/时间已过,并且 URL 按预期过期,但我的前端应用程序仍然能够使用我传递给它的 URL 显示对象。

这是在每次刷新时执行的后端代码:

在我的前端,我只需将 signedUrl 添加到 Image 标签:

如果我转到浏览器并手动粘贴我的signedUrl,我可以看到它说访问被拒绝,因为过期。

0 投票
1 回答
474 浏览

cookies - 使用 Google Cloud CDN 签名的 Cookie 以 403 响应

我正在尝试通过 Google Cloud CDN 让 hls / dash 流工作,以获得视频点播解决方案。文件/清单位于谷歌云存储桶中,一切看起来都配置正确,因为我遵循了文档https://cloud.google.com/cdn/docs/using-signed-cookies的每一步。

现在,我正在使用来自Google Cloud CDN 的等效 Node.js 代码,以存储桶作为后端签名 cookie,以创建一个具有正确签名密钥名称和值的签名 cookie,该名称和值是我之前在谷歌云中设置的。cookie 被发送到我在 Google Cloud 中的负载平衡器后端。

可悲的是,我总是收到 403 响应说<?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message></Error>

更多信息:

  • 在负载均衡器后端激活签名的 urls/cookies
  • cdn-account 存储桶中的 IAM 角色设置为“objectViewer”
  • 创建、保存并用于签署 cookie 的签名密钥

非常感谢您对此的任何帮助。

编辑: 我刚刚尝试了确切的 python 代码谷歌状态来从https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/cdn/snippets.py使用以下参数创建签名的 cookie:

称呼:sign_cookie('http://cdn.myurl.com/', 'mykeyname', 'mybase64encodedkey', 1614110180545)

密钥是直接从谷歌复制的,因为我在那里生成了它。

负载均衡器日志写入invalid_signed_cookie.