我试图给予未经身份验证的访问权限(时间限制),以列出和下载对象的谷歌存储桶,并发现签名的URL可以做到这一点。但是有符号的URL对于单个对象是好的,它们在文档https://cloud.google.com/storage/docs/access-control/signed-urls#considerations中已经提到过了。
在使用签名URL时,请记住以下几点: 签名URL只能用于通过XML端点访问云存储资源。 通常可以为任何XML请求创建有符号URL;但是,Node.js云存储客户端库目前只能为单个对象创建签名URL。例如,它不能用于在桶中列出对象的签名URL。
在Node.js、Python或任何其他客户端库中,或者通过手动创建签名urls,我可以与用户共享链接,以便用户浏览存储桶并下载所需的对象,有什么方法吗?
谢谢!
发布于 2021-04-23 05:56:54
简单的回答不是。
但我可以解释原因。事实上,您必须理解为什么签名的URL是伟大和有用的。
我举一个例子。您有一个1Tb文件,请求者希望下载它。你有两个解决方案
在第一种解决方案中,用户已经在服务器上进行了身份验证,很容易让他们安全地下载文件。但是,在用户下载文件之前,您需要一个巨大的临时存储空间来临时存储该文件。
在第二种解决方案中,没有存储问题(因此也适用于无服务器解决方案、云运行、云函数和App ),但是您需要委派下载文件的授权:这是签名URL的目的。
现在,回到您的用例:您希望委派文件列表功能。为什么?因为你有存储问题?性能问题?还是为了方便?
因为这个解决方案没有解决任何问题,所以它还没有实现。因此,您需要直接从服务器提供文件列表,然后使用签名的URL将下载委托给用户,用户已经选择了他们想要的文件。
编辑1
您需要有一个谷歌身份(用户帐户或服务帐户),由IAM服务授权,以访问您的桶信息。
但是,如果您有一个非google管理的身份令牌,您可以使用它的一个新功能。你可以使用工作负载标识池.
其想法如下:
我没有找到可以使用的功能,但它的工作原理很好,符合您的要求!
https://stackoverflow.com/questions/67228783
复制相似问题