【问题标题】:How to generate Cloudfront signed url on client side using aws-sdk?如何使用 aws-sdk 在客户端生成 Cloudfront 签名的 url?
【发布时间】:2022-01-27 02:26:30
【问题描述】:

我在前端使用 ReactJs,我只是尝试使用 getSignedUrl() 方法通过 AWS.CLOUDFRONT.SIGNER 类生成一个云端签名的 url,但它说“浏览器中没有实现 createSign”。

请告诉我这是否是正确的方法,我想在我的 React 应用中从 Aws 流式传输视频,谢谢。

【问题讨论】:

    标签: reactjs aws-sdk amazon-cloudfront


    【解决方案1】:

    createSign is not implemented in the browser 是正确的。这是一个需要身份验证的操作,因此如果您的凭据(例如访问密钥)在您的 Web 应用程序中,那么该密钥将公开给加载页面的任何客户端。

    您应该创建一个隐藏此密钥的后端服务,然后在该服务上公开端点以创建并返回签名 URL。

    看到这个similar question and answer

    
    (client)                      (backend service)                 (aws)
        |   POST /create-signed-url       |                           |
        |===============================>>|                           |
        |                                 | aws-sdk getSignedUrl()    |
        |                                 |=========================>>|
        |                                 |                           |
        |                                 |   new signed url          |
        |                                 |<<=========================|
        |          signed url             |                           |
        |<<===============================|                           |
        |                                 |                           |
    

    【讨论】:

    • 感谢您的回复,所以您的意思是说在前端生成一个签名的url不是一个好习惯,而且也不能这样做?
    • 我并不是说它不能完成,但我强烈建议不要这样做。您用于向 AWS 进行身份验证的密钥很容易被盗,并且根据该密钥所针对的用户的权限,有人可能会对您的 AWS 账户产生未偿成本(很容易达到数千美元)。请参阅来自 AWS 的 this 文章,其中详细介绍了这些密钥的重要性以及如果您暴露了这些密钥该怎么办。
    • 感谢您的帮助!最后一件事,你能告诉我从客户端可以使用什么方法来做到这一点(只是为了知识目的)。
    • 老实说,我不确定。 AWS 开发工具包正在构建某种发送到 AWS 的请求。如果它是一个简单的 REST API,那么您可以尝试发送类似的请求。建立一个简单的Express.js REST API 可能需要更少的时间,然后您可以在其中使用aws-sdk 库。在那个环境(Node.js)中,getSignedUrl() 方法将被实现。
    • 非常感谢您的帮助!
    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2021-12-28
    • 2016-12-11
    • 1970-01-01
    • 2021-03-22
    • 2019-07-15
    相关资源
    最近更新 更多