2018年6月7日 星期四

Varnish: 利用 VCL 檔案除錯 URL Token Validation

使用 Varnish 的快取反代理,若要使用 URL Token Validation 來做存取驗證, 用來驗證 VCL 檔案中的程式和自己寫的程式需要打印錯誤訊息才能除錯。



sha1 比對的腳本如下 (需要把程式放在 vcl_error 類別底下):

其中 base64_decode 裡面放的是自己的加密 key 包成 base64 的字串。


declare local var.test STRING;
declare local var.bs STRING;
declare local var.test_my STRING;
declare local var.test_real STRING;

set var.test = regsub(digest.hmac_sha1(digest.base64_decode("VE9EQVlJU01ZSEFQUFlEQVkmXnNzJCEhQCNz"),
req.url.path req.http.X-Exp), "^0x", "");

set var.test_my = regsub(digest.hmac_sha1(digest.base64_decode("VE9EQVlJU01ZSEFQUFlEQVkmXnNzJCEhQCNz"),
req.url.path req.http.X-Exp),"","");

set var.test_real = digest.hmac_sha1(digest.base64_decode("VE9EQVlJU01ZSEFQUFlEQVkmXnNzJCEhQCNz"),
req.url.path req.http.X-Exp);

set var.bs = digest.base64_decode("VE9EQVlJU01ZSEFQUFlEQVkmXnNzJCEhQCNz");

synthetic {"SIGN:"} + var.test + {"

path: "} + req.url.path + {"

x-exp:"} + req.http.X-Exp + {"

mackey:"} + var.bs + {"

myset:"} + var.test_my + {"

realtest:"} + var.test_real + {"
"};

return(deliver);

Reference:
http://book.varnish-software.com/3.0/VCL_functions.html
https://docs.fastly.com/guides/vcl/local-variables-in-vcl.html
http://book.varnish-software.com/3.0/VCL_Basics.html

沒有留言:

張貼留言

© ERIC RILEY , 自由無須告知轉貼
Background Japanese Sayagata by Olga Libby