gpt4 book ai didi

amazon-web-services - 使用签名 Cookie 从 CloudFront 提供私有(private)内容

转载 作者:行者123 更新时间:2023-12-03 15:59:01 26 4
gpt4 key购买 nike

Cloudfront 支持用于提供私有(private)内容的签名 cookie,但我找不到任何有关如何执行此操作的示例。

我找到了有关如何使用 Java AWS API 而不是 Cookie 签署 URL 的示例,有人可以分享他们这样做的经验吗?这是保护从 CloudFront 提供的多种媒体形式的最佳方式。

我们的网站有用户上传的图像和视频,然后可以通过在我们网站上的搜索查看,我想确保这些图像只能由我们的网站提供,而不是复制以供以后使用。

最佳答案

我们能够使用自定义策略引入签名 cookie
这个图书馆

http://www.jets3t.org/

您需要三个由您的应用创建的 cookie,如此处所述
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-custom-policy.html

请仔细阅读。特别是关于如何创建策略的部分。

这三个cookie是:

  • CloudFront-策略
  • CloudFront-签名
  • CloudFront-Key-Pair-Id

  • 首先创建一个策略
    Date expirationTime = (new LocalDate()).plusYears(1).toDate();
    String customPolicy = CloudFrontService.buildPolicyForSignedUrl(basePath, expirationTime, null, null);

    //and assign it to a cookie

    Cookie signedCookiePolicy = new Cookie("CloudFront-Policy", ServiceUtils.toBase64(customPolicy.getBytes()));
    signedCookiePolicy.setMaxAge(365 * 24 * 60 * 60);
    signedCookiePolicy.setPath("/");
    response.addCookie(signedCookiePolicy);

    签名是棘手的部分,但一旦你使用这个 jets3t 东西 ,所有工具都可用
    byte[] signatureBytes = EncryptionUtil.signWithRsaSha1(getDerPrivateKey(), customPolicy.getBytes("UTF-8"));
    String signature = ServiceUtils.toBase64(signatureBytes).replace('+', '-').replace('=', '_').replace('/', '~');
    Cookie signedCookieSignagture = new Cookie("CloudFront-Signature",cdnSignService.signBaseUrl(basePath, expirationTime));
    signedCookieSignagture.setMaxAge(365 * 24 * 60 * 60);
    signedCookieSignagture.setPath("/");
    response.addCookie(signedCookieSignagture);

    第三个 cookie 仅保存您的 AWS 账户的 key ID。
    Cookie signedCookieKeyPairId = new Cookie("CloudFront-Key-Pair-Id","YOUR_AWS_CF_KEY_ID");
    signedCookieKeyPairId.setMaxAge(365 * 24 * 60 * 60);
    signedCookieKeyPairId.setPath("/");
    response.addCookie(signedCookieKeyPairId);

    以上仅向您介绍了使用正确的库来创建签名 cookie 的概念。它不能自行执行或运行。

    很好,这是我的第一个溢出贡献..

    关于amazon-web-services - 使用签名 Cookie 从 CloudFront 提供私有(private)内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29885302/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com