【问题标题】:Can cloudfront signed url be generated from signed cookie data?可以从签名的 cookie 数据生成云端签名的 url 吗?
【发布时间】:2021-09-19 06:37:28
【问题描述】:

可以从签名的 cookie 数据生成云端签名的 url 吗?

我有一个下载私人内容的签名网址

http://1234.cloudfront.net/myfile.txt?response-content-disposition=attachment%3Bfilename%3Dfoobar.json&Expires=1510111000&Signature=someRandomSignature&Key-Pair-Id=MY-KEY-PAIR

签名 URL 工作正常。

现在,我正在尝试生成一种公开私人内容的签名 cookie,因此我将以下 cookie 添加到我的响应对象中(在 Spring/JAVA 中):

Cookie expiresCookie = new Cookie("CloudFront-Expires", "1510111000");
Cookie signatureCookie = new Cookie("CloudFront-Signature", "someRandomSignature");
Cookie keyPairCookie = new Cookie("CloudFront-Key-Pair-Id", "MY-KEY-PAIR");

一旦客户端获得这些 cookie,它(客户端)不能生成签名的 url 并将 url 共享给不应访问它的各方吗?

【问题讨论】:

    标签: amazon-web-services cookies amazon-cloudfront cdn


    【解决方案1】:

    虽然这当然是可能的,但 CloudFront 签名的 URL/cookies 机制允许服务器生成签名以仅使用 IpAddress 策略字段根据 CloudFront developer documentation 锁定来自某些 IP 地址的客户端的访问:

    IP 地址(可选)

    发出 GET 请求的客户端的 IP 地址。请注意以下几点:

    • 要允许任何 IP 地址访问对象,请省略 IpAddress 范围。
    • 您可以指定一个 IP 地址或一个 IP 地址范围。例如,如果客户端的 IP 地址位于两个单独的范围之一,则您无法将策略设置为允许访问。
    • 要允许从单个 IP 地址进行访问,请指定:"IPv4 IP address/32"
    • 您必须以标准 IPv4 CIDR 格式指定 IP 地址范围(例如, 10.52.176.0/24)。 [...]

    如果服务器生成签名 URL 或 cookie 并设置了IpAddress,则只有来自匹配 IP 地址的其他方才能访问 CloudFront 上的内容。

    【讨论】:

    • 这是一个网络应用程序,用户将拥有各种IP地址。在将资源链接放在用户页面之前,我计划仅在用户有权下载它的情况下对其进行签名(签名的 url 或签名的 cookie)。基于 IP 的约束对我来说不是一个可行的解决方案。谢谢迪米特里。
    • @Rose,你没有链接生成时用户IP地址的信息吗?
    • 嗯.. 有趣,是的,在签名期间我可以通过一个指定用户 IP 地址的策略。唯一的问题是 - 它不是每个用户唯一的。可能一个组织中的用户有一个出口 IP,我无法判断特定呼叫是来自用户 A 还是来自用户 B,因为他们都来自一个 IP(从我们服务器的角度来看)。@Dmitry Guyvoronsky 谢谢你的想法.
    猜你喜欢
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 2010-10-27
    • 2021-11-22
    • 2018-02-28
    • 2020-09-06
    • 1970-01-01
    • 2019-03-11
    相关资源
    最近更新 更多