Arp*_*yal 9 url authorization amazon-s3 amazon-web-services amazon-cloudfront
我正在尝试使用签名网址将Amazon cloudfront的视频文件提供给我的应用用户.我已经使用文档创建了签名的URL ,它运行得非常好.生成的url具有签名,expires和keypair_id.
我想要实现的是仅当请求从我的特定移动应用程序进入时才将视频文件提供给用户.我正在寻找一个解决方案来授权云端方面的请求(在已签名的URL上).
因此,如果用户尝试使用我们的移动应用访问标识的URL,我们将要服务于内容,但如果URL是从Web或其他任何移动客户端进行访问,我们想提出一个授权错误或404.
我已经浏览了文档和几个博客,希望实现上述目标,每个人都指出了我使用签名网址的方向.但是仍然可以通过浏览器直接访问网址.
此外,我想知道,为什么一个标识的URL具有签名作为GET参数,因为如果签名被删除的内容仍然是可以访问使用url没有GET查询参数.
Signed Url: http://d2z7g8y6l5f1j0.cloudfront.net/test_upload.mp4?Expires=1456828601&Signature=R3tljkRxGM9se2S4IJT908sT2BBGNJkpWE9IE-v1GAt-QY0WcaEVEY-OYvSSlhFK1ueNcWhgAscJQ7J~qUKZUt3XS5raKU3kj9STKYYzCemRRm1j5DE8XfhjRKRggSSw138F0lr~tDt~TLoJ7Pj9NNvoGl42jNNLaET7~d9pkAGAh-sNpoS1gz~d0CZTo41ZTFMIzshgZNxrWpCOR0PrLHfRALy2H9-Z9w4XfU4v66WEseVQ3FWyeXFyV0UO2S-KIXbe1ODiHFC6Ae6AJlWzoFfIGAxiLymmtUMJgeQHnu80u97ysMbbNYvek-S0tQBkkID3zC~tDQH~EjXPYcNUbA__&Key-Pair-Id=APKAINPV56WSGDECRTPQ
^^^ Serves the content
Original Url: http://d2z7g8y6l5f1j0.cloudfront.net/test_upload.mp4
^^^ Still serves the content
Run Code Online (Sandbox Code Playgroud)
上面的网址有什么区别?
我生成的已签名网址仍在提供内容,因此过期GET查询参数的重点是什么,或问题是我是否正确设置了网址.
我按照以下方法生成了我的签名网址:
from boto.cloudfront import CloudFrontConnection
from boto.cloudfront.distribution import Distribution
# establish cloudfront connection
cloudfront_connection = CloudFrontConnection('AWS_KEY', 'AWS_SECRET')
expiry_time = int(time.time() + 3000)
#get the distribution
distribution = Distribution(connection = cloudfront_connection, domain_name = '<specified_domain_name>', 'id' = '<specified distribution id>')
#create signed url
signed_url = distribution.create_signed_url(url = '<cloudfront_url>', keypair_id = '<cloudfront keypair_id>', expire_time = expiry_time, private_key_file = open('<location>', 'r'))
Run Code Online (Sandbox Code Playgroud)
我已经浏览了文档和几个博客,希望实现上述目标,每个人都向我指出了使用我已经使用的签名网址的方向。但仍然可以通过浏览器直接访问这些网址。
也许您对签名 URL 功能存在误解。任何拥有该 URL 的客户端都可以访问该内容 - 没有任何限制可以将其限制为特定的移动浏览器或桌面浏览器或其他任何内容。只要该URL有效(例如在有效期内/未过期、在您指定的IP范围内等),任何客户端都将被允许访问。
您的应用程序应该在用户请求时实时生成签名 URL,并且它应该在您可接受的时间范围内过期。签名 URL 的工作原理下的文档对此进行了解释。
我还想知道,为什么签名的 url 将签名作为 GET 参数,就像删除签名一样,仍然可以使用不带 get 查询参数的 url 访问内容。
您可以设置缓存行为,限制对具有有效签名 URL 的请求者的访问。总而言之,当您设置分发时,您可以根据用户请求的路径配置各种缓存行为。
这个主题有点隐藏在文档中。请参阅有关缓存行为设置 的文档,特别是路径模式和限制查看者访问小节。
| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |