在VCL中交付对象之前,对类似S3,签名,有时间限制的请求进行清漆

时间:2013-04-26 21:00:40

标签: varnish varnish-vcl

这个问题可能看起来有点奇怪,但是有可能在VCL中使用穷人解决方案来解析由引用者创建的签名请求(使用共享密钥,也就是HMAC的穷人解决方案) (主要)网站,如果签名正确且(签名)时间戳尚未过期,则仅提供清漆内容?

也就是说,类似于Amazon S3的工作方式,您可以轻松地创建一个签名的临时URL到S3对象,该URL将在规定的秒数内到期。

注意:我不是在谈论缓存对象到期,而是客户端的URL到期。

当您只想向用户提供临时URL以防止长期热链接而不检查referrer-header时,它会派上用场。

所以 - 对VCL中的临时URL(最好是在vcl_recv中)的一个穷人解决方案,使内部对象过期)。是不是可以不制作VMOD?

编辑:

我找到了另一种使用Varnish授权内容的方法:

http://monolight.cc/2011/04/content-authorization-with-varnish/

但它仍然不是我想要达到的目标。

祝你好运!

2 个答案:

答案 0 :(得分:3)

是的,这是可能的。

本质上你需要验证签名(摘要vmod),从它所在的标题中选择时间戳(regsub),并将其与当前时间进行比较。

使用std.integer()转换时间戳:

https://www.varnish-cache.org/docs/trunk/reference/vmod_std.html#integer

使用VCL中的内置now变量来查找当前时间戳。您可能希望(now + 0s)强制Varnish为您提供unix时间戳。

https://www.varnish-cache.org/docs/trunk/reference/vcl.html#variables

摘要vmod在github上:

https://github.com/varnish/libvmod-digest

答案 1 :(得分:0)

如果有帮助的话,已有VMOD吗?

Varnish Secure Download Module