Akamai G20 Header Authentication
Problem this snippet solves:
iRule for detection and authentication of Akamai G2O headers. Requires TMOS 11.1 or above as this leverages "CRYPTO::sign". This code block is the basics needed to make a decisions about requests that may or may not contain Akamai G2O headers.Code :
when HTTP_REQUEST {
#Requires TMOS 11.1 or above for support for "CRYPTO::sign"
#This code block detects if the Akamai authentication headers are there
#if so it then does the caculations based on the shared secret
#finally it compares the output and logs a match
if {[HTTP::header exists "X-Akamai-G2O-Auth-Data"] && [HTTP::header exists "X-Akamai-G2O-Auth-Sign"]} {
#set shared secret here
set secret_key "pass"
set data "[HTTP::header value "X-Akamai-G2O-Auth-Data"][HTTP::path]"
set signature "[HTTP::header value "X-Akamai-G2O-Auth-Sign"]"
set signed_data [b64encode [CRYPTO::sign -alg hmac-md5 -key $secret_key $data]]
if { $signed_data eq $signature } {
log local0. "Signatures match"
}
}
}Tested this on version:
11.1Published Jan 30, 2015
Version 1.0Russell_Moore_8
Nimbostratus
Joined April 25, 2006
Russell_Moore_8
Nimbostratus
Joined April 25, 2006
1 Comment
- JRahm
Admin
Contributed by Russell Moore