Laz*_*aza 3 amazon-web-services amazon-cloudfront
Cloudfront支持签名cookie以提供私有内容,但我无法找到有关如何执行此操作的任何示例.
我已经找到了如何使用Java AWS API签署URL而不是Cookie的示例,有人可以分享他们这样做的经验,这是确保从CloudFront提供多种媒体形式的最佳方式.
我们的网站上有用户上传的图片和视频,然后可以通过我们网站上的搜索进行查看,我想确保这些图片只能由我们的网站提供,不能复制供以后使用.
小智 7
我们能够使用此库引入带有自定义策略的签名cookie
您需要使用您的应用创建的三个Cookie,如 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-custom-policy.html所述
请仔细阅读.特别是关于如何创建策略的部分.
这三个饼干是:
首先制定政策
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);
Run Code Online (Sandbox Code Playgroud)
签名是棘手的部分,但是一旦你使用这个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);
Run Code Online (Sandbox Code Playgroud)
第三个cookie仅包含您的AWS账户的密钥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);
Run Code Online (Sandbox Code Playgroud)
以上仅介绍使用正确的库创建签名cookie的概念.它本身不可执行或可运行.
很好,这是我的第一次溢出贡献..
| 归档时间: |
|
| 查看次数: |
2216 次 |
| 最近记录: |