Slide 31
Slide 31 text
Fastly্ͰͷೝՄ – VCL
if (req.http.Cookie:Auth !~ "(^[^¥.]+)¥.([^¥.]+)¥.([^¥.]+)$") {
set req.http.Auth-Valid = "false";
}
set var.base64Header = re.group.1;
set var.base64Payload = re.group.2;
set var.signature = digest.base64url_decode(re.group.3);
set var.validSignature = digest.base64_decode(digest.hmac_sha256_base64(var.jwtSecret, var.base64Header "."
var.base64Payload));
set var.payload = digest.base64_decode(var.base64Payload);
set var.expires = regsub(var.payload, {"^.*?"exp"¥s*:¥s*(¥d+).*?$"}, "¥1");
# γάωνϟͷਖ਼ੑͱ༗ޮظݶͷ֬ೝ
if (var.signature != var.validSignature || time.is_after(now, std.integer2time(std.atoi(var.expires)))) {
set req.http.Auth-Valid = "false";
}
# payload͔ΒݖݶใͳͲΛநग़
req.http. UserID = regsub(var.payload, {"^.*?"uid"¥s*:¥s*"(¥w+)".*?$"}, "¥1");