CloudFront签名URL
目的
使用CloudFront签名URL机制来实现,下载文件安全。
前提
已经为CloudFront设置好密钥组,并且启用CloudFront签名URL机制来下载s3文件选项。
Maven
...<aws.java.sdk1.version>1.12.31</aws.java.sdk1.version>
...<dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk-cloudfront</artifactId><version>${aws.java.sdk1.version}</version></dependency>
...
Java
这里使用AWS for Java SDK V1的版本,V2的版本我翻了半天文档都没有找到到CloudFront怎么签名URL的,只有V1版本的Java示例代码。
package util;import com.amazonaws.services.cloudfront.CloudFrontUrlSigner;
import com.amazonaws.services.cloudfront.util.SignerUtils;
import lombok.extern.slf4j.Slf4j;import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.spec.InvalidKeySpecException;
import java.util.Date;@Slf4j
public class AWSCloudFrontUtil {/*** 签名URL** @param distributionDomain 域名* @param privateKeyFile 私钥文件* @param s3ObjectKey s3key* @param keyPairId 密钥id* @param dateLessThan 小于日期* @param dateGreaterThan 大于日期* @return 签名url*/public static String signUrl(String distributionDomain, File privateKeyFile, String s3ObjectKey, String keyPairId, Date dateLessThan, Date dateGreaterThan) {SignerUtils.Protocol protocol = SignerUtils.Protocol.https;// 中文URL处理,在s3中空格需要替换成+s3ObjectKey = s3ObjectKey.replace(" ", "+");s3ObjectKey = UriUtils.encodePath(s3ObjectKey, StandardCharsets.UTF_8);String ipRange = "0.0.0.0/0";try {return CloudFrontUrlSigner.getSignedURLWithCustomPolicy(protocol, distributionDomain, privateKeyFile,s3ObjectKey, keyPairId, dateLessThan,dateGreaterThan, ipRange);} catch (InvalidKeySpecException | IOException e) {log.error("签名url异常:", e);}return "";}
}
架构图
参考:
- CloudFrontUrlSigner
- 使用Amazon CloudFront签名URL+S3实现私有内容发布
- 使用Amazon CloudFront签名URL+S3实现私有内容发布
CloudFront签名URL相关推荐
- 使用签名 URL 和已签名的 Cookie 提供私有内容
许多通过互联网分发内容的公司都希望限制对文档.业务数据.流媒体或面向选定用户(例如付费用户)的内容的访问.要使用 CloudFront 安全地提供这种私有内容,可执行以下操作: 要求用户使用特殊的 C ...
- 存储桶上传策略和签名 URL的绕过及利用
本文中带有自己一些拙见,读者若存在相关问题或者有其他想法的,欢迎在评论区交流探讨.原文:https://labs.detectify.com/2018/08/02/bypassing-exploiti ...
- 阿里云OSS获取文件强制下载的签名URL
需求: 视频文件在后台可预览,可下载. 目前难题: 在点击下载时,OSS的签名url在浏览器中会直接播放,不提示下载 原因 : OSS在上传时未指定文件元信息.官方推荐,指定文件元信息 'Conten ...
- 调用阿里云OSS签名URL
业务场景 由于项目中未来会产生大批量的音视频文件,全部存在服务器本地将会占用大量的空间:因此决定使用阿里云对象存储服务(Object Stroage Service, OSS)实现文件上云:本地只保存 ...
- aws签名 php,创建亚马逊AWS S3预签名URL PHP - php
根据此链接http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-s3.html,我可以轻松地创建一个预签名链接,只需将寿命添加到getObje ...
- 技术讨论 | 如何绕过并利用Bucket的上传策略和URL签名
简介 Bucket上传策略是一种直接从客户端向Bucket(存储空间)上传数据的便捷方式.通过上传策略中的规则以及与访问某些文件的相关逻辑,我们将展示如何拿到完整的Bucket对象列表,同时能够修改或 ...
- cloudfront s3_如何使用S3,CloudFront和Route53托管静态网站
cloudfront s3 by Paul Berg 保罗·伯格 如何使用S3,CloudFront和Route53托管静态网站 (How to Host a Static Website with ...
- AWS之S3套CloudFront的CDN
问题 需要给S3访问套一层CDN,AWS的CDN是CloudFront. 解决 主要步骤 创建公私钥密钥对 创建配置密钥组 创建CloudFront分配 测试(Java签名URL) 创建公私钥密钥对 ...
- php上传照片到s3云服务器,PHP上传文件到AWS S3生成下载文件URL
* 加载s3客户端 * @return string*/ functionAWS_S3Client(){$ACCESS_KEY_ID = '你的s3 ID';$SECRET_ACCESS_KEY = ...
最新文章
- 微服务架构的基础框架选择:Spring Cloud还是Dubbo?
- c语言中throw的用法,C中的内联throw()方法
- PHP 项目中单独使用 Laravel Eloquent 查询语句来避免 SQL 注入
- mybatis 复习笔记02
- 【python初识】数据和对象
- BIOS系统服务 —— 直接磁盘服务(int 0x13)
- 冰墩墩+周杰伦也救不了NFT
- Java中List for循环的6种写法总结(推荐)(亲测)
- Dropbox - share your doc on the cloud
- 一步步编写操作系统 10 cpu的实模式
- 华为P30/P30 Pro细节再曝光:3.5mm耳机插孔和红外遥控各占其一
- oracle中正则表达式相关函数regexp_like简介
- LAMP默认安装路径
- windows下 dos 执行php 代码
- acm steps chapter2总结
- android studio创建9.patch图片,使用时出现Error: Duplicate resources
- redux-actions入门
- python开发Day10(多进程多线程补充)
- 易筋SpringBoot 2.1 | 第十六篇:SpringBoot通过JDBC访问数据库
- 基于Java毕业设计在线商城系统源码+系统+mysql+lw文档+部署软件