热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

传统cdn与云cdn_从CDN提供私人内容

传统cdn与云cdnAmazonWebServices是一个云服务平台,可按需提供内容交付,数据库存储以及许多其他功能和基础架构,以帮助企

传统cdn与云cdn

Amazon Web Services是一个云服务平台,可按需提供内容交付,数据库存储以及许多其他功能和基础架构,以帮助企业采用“按需付费”的定价方法进行扩展和发展。

Amazon CDN是AWS的主要组成部分,目的是加快向全球用户分发静态或动态Web内容的速度。

例如:假设您在美国地区托管了您的网站。 并且,如果来自澳大利亚的某些用户试图访问您的网站,则路由通​​常会转到美国,并向您的用户接收内容。 如果您的用户再次访问该内容,该过程将花费一些时间来交付您的内容,这意味着高延迟。

对于此问题,amazon CDN提供将您的网站缓存在最近的边缘位置,并使用该边缘位置将内容交付给您在澳大利亚境内的用户。 在发送之前,它将与原始内容同步并向您发送最新详细信息。 这样,将需要较低的延迟。

但是,每个网站并不与用户共享所有内容。 有供付费用户使用的网站,或者有一些在订阅用户之间共享的私人内容。 还有一些公司通过互联网分发内容,这些内容限制了访问权限,例如业务数据,媒体流。

我们如何仅在成千上万的用户中共享私有内容给指定的用户?

例如,如果您的应用程序需要订阅,则意味着可以从Amazon CDN的私有内容功能中实现您的网站中只有私有内容在被订阅成员之间共享。 它将确保只有经过身份验证的用户才能访问并阻止其他用户访问您的私人内容。

使用签名的网址和签名的COOKIE访问私有内容。

签名的乌尔斯

Signed Urls是一个URL,其中包含私有内容中每个文件的信息,例如到期日期,密钥对ID和签名。 提到的数据将包含在我们发送的URL中。

Urls签名的工作方式,

在CDN分发中指定可以访问内容的受信任的签名者。开发应用程序后,为了访问您的内容,它将为受限制的应用程序对象或部分创建签名的URL。当用户请求文件时,然后,应用程序验证用户。验证后,应用程序创建并向用户返回签名的url。然后,可以将限制的数据访问给指定的用户。CDN使用公共密钥来验证签名并确认Url是否有效。 如果签名无效,则请求将被拒绝。

签名曲奇

CDN签名的COOKIE允许您控制您的私人数据,并将其分配到您要共享的用户中。 签名的COOKIE可以用于访问多个受限制的文件,而无需指定URL。

签名COOKIE的工作方式,

在CDN发行版中,我们指定了受信任的签名者以便对其进行访问。在开发应用程序之后,为了访问您的内容,我们必须向查看者(用户)发送三个set-COOKIE标头。 它们是CloudFront-Key-pair-id,CloudFront-SignatureCloudFront-Policy 。 在查看者请求之前,我们必须将set-COOKIE标头发送给用户。用户将访问您的私人内容(订阅者)。

我们的应用程序在响应中将set-COOKIE标头返回给用户,然后用户请求一个对象。在请求标头中,CDN在已签名的COOKIE中获取签名,然后使用之前在根帐户中创建的公钥对其进行验证。 使用密钥验证后,如果请求有效,它将检查策略,该策略将检查到期日期和其他选项。 然后它将访问用户请求的内容。

首先,有一些先决条件

在S3存储桶或自定义来源中托管的AWS AccountStatic Web托管lambda函数(API网关)

请注意,如果您使用AWS的免费套餐帐户,则成本将为零。 如果没有,您可以在给定的链接中参考CDN的价格,并且执行这些步骤不会涉及其他成本。 https://aws.amazon.com/cloudfront/pricing/

步骤1:创建CloudFront密钥对

从您的ROOT帐户登录

转到右上方的“用户”选项卡>选择“我的安全证书”>“ CloudFront密钥对”>“创建新密钥对”。

创建密钥对后,下载密钥对。 并且您可以在屏幕上找到“密钥对ID”作为访问密钥ID。 并在您下载的文件名中。

注意:您的根帐户中只能有一个密钥对,请确保在同一根帐户中没有创建多个活动密钥对。

步骤2:建立CDN发行版本

确保在“对象缓存”中选择“自定义”,然后为所有值输入0,然后浏览器将避免缓存任何COOKIE值,因为每次访问时您都会提供不同的COOKIE值,因此,即使缓存是CDN的主要原因,在这一点上这将是没有用的。 并选择“是”以限制查看者访问,因为这是使用签名COOKIE / URL的目的,以实现安全的内容分发。 出于测试目的,启用了所有COOKIE以及查询字符串转发和缓存。

现在,在CDN中创建私有内容之后,我们有两种访问内容的方法。

签名URL签名COOKIE

签名的URL和COOKIEs提供相同的基本功能,可让您控制私人内容。

固定政策和自定义政策

罐头策略是一种预先编写的策略,与自定义策略相比,其可控性较低。 下面的矩阵在AWS文档中提供。

步骤3.1 —使用签名的URL

您可以在带有所需模块的lambda函数中使用以下代码,以获取内容的签名URL。

1.包括“ aws-cloudfront-sign”模块。

2.输入您的私钥或pk-APXXXXXXXXXXXXX.pem文件

3.在选项中,定义密钥对ID,到期时间

4.输入您要限制的特定内容的cloudfront URL

var cf = require ( 'aws-cloudfront-sign' );
var privateKeyString = ` - - -BEGIN RSA PRIVATE KEY - - -
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX- - -END RSA PRIVATE KEY - - -` ;
var options = { keypairId : 'APXXXXXXXXXXXXXXXXX' , privateKeyString : privateKeyString, expireTime : new Date ().getTime() + 18000 }
exports.handler = ( event, context, callback ) => {const done = ( err, res ) => callback( null , {statusCode : err ? '400' : '200' ,body : err ? err.message : res,headers : {'Content-Type' : 'application/json' ,},});
var signedUrl = cf.getSignedUrl( 'http://xxxxxxxx.cloudfront.net/path/to/object' , options);
context.done( null , signedUrl);
};

步骤3.2 —签名的COOKIE

包括“ aws-cloudfront-sign”模块输入私钥或包括pk-APXXXXXXXXXXXXXXXX.pem文件在选项中,定义密钥对ID,到期时间输入cloudfront Url作为通配符。

var cf = require ( 'aws-cloudfront-sign' );
var privateKeyString = ` - - -BEGIN RSA PRIVATE KEY - - -
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX- - -END RSA PRIVATE KEY - - -` ;
var options = { keypairId : 'APXXXXXXXXXXXXXXXXX' , privateKeyString : privateKeyString, expireTime : new Date ().getTime() + 18000 }
exports.handler = ( event, context, callback ) => {const done = ( err, res ) => callback( null , {statusCode : err ? '400' : '200' ,body : err ? err.message : res,headers : {'Content-Type' : 'application/json' ,},});
var signedCOOKIEs = cf.getSignedCOOKIEs( 'http://xxxxxxxx.cloudfront.net/*, options);
context.done(null, signedCOOKIEs);
};

请参阅文档以了解进一步的更改,例如更改为自定义策略

http://docs.aws.amazon.com/AWSJavascriptSDK/latest/AWS/CloudFront/Signer.html

如果遇到错误,则在测试lambda函数时找不到模块,请包括节点模块。

https://github.com/jasonsims/aws-cloudfront-sign


1.在计算机上安装Node

2.创建一个文件夹,并在该文件夹内创建一个package.json文件

3.创建一个index.js文件,并在文件中的签名url或签名的COOKIE代码上方输入

4.安装aws-cloudfront-sign模块

5.压缩项目并在代码输入类型>上载zip文件下上载到lambda函数。

结论

希望这可以帮助您创建私人内容,并与Signed COOKIEs和Signed Urls一起提供。 对于签名的COOKIE,没有适当的教程来帮助您举例。 如果有任何问题,可以在下面发表评论。

翻译自: https://hackernoon.com/serving-private-content-from-cdn-f02eo3x78

传统cdn与云cdn



推荐阅读
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • .NetCoreWebApi生成Swagger接口文档的使用方法
    本文介绍了使用.NetCoreWebApi生成Swagger接口文档的方法,并详细说明了Swagger的定义和功能。通过使用Swagger,可以实现接口和服务的可视化,方便测试人员进行接口测试。同时,还提供了Github链接和具体的步骤,包括创建WebApi工程、引入swagger的包、配置XML文档文件和跨域处理。通过本文,读者可以了解到如何使用Swagger生成接口文档,并加深对Swagger的理解。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
author-avatar
神秘的绝代双角
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有