CDN URL Token Authentication
Publisher: Psychz Networks, April 19,2021The following article will help you to generate secure URLs using URL Token Authentication accessible using a token generated using a secret key. This token can be set to expire after a specified timestamp.
To generate a secure token using PHP script, you will require to create at least one token utilizing the dashboard. This will allow you to pass the security key to our backend. If you are not sure how to create the security token using our dashboard, please follow the link https://www.psychz.net/client/kb/en/add-security-token.html.
Sample security token looks like
Once the security token is generated, you can use it in PHP code to create the URL token.
//$base_url = 'https://yourdomain.com'; // This is your CDN's base URL of the site, without the slash in the end
//$securityKey = 'token_security_key'; // Your security key used to create token using dashboard
//$locationpath = '/index.html'; // provide the path starting with the '/'
function securityToken( $base_url, $locationpath, $securityKey, $expires ='', $ip_addr=''){
// Set the time of expiry to one hour from the time of the creation
$expires = time() + 3600; // This parameter is optional and is up to your discretion define its expiration to the secure URL.
// If using IP validation
$ip_addr = "192.XXX.XX.XX";// Replace the IP address with the one used in the hash. This parameter is optional and is up to your discretion if you want to provide IP restrictions or not.
// Generate the token
if(!empty($expires)){
// Generate the token with expiry
$hashableBase = $securityKey.$ip_addr.$locationpath.$expires;//here $ip_addr is optional
$token = md5($hashableBase, true);
$token = base64_encode($token);
$token = strtr($token, '+/', '-_');
$token = str_replace('=', '', $token);
// Generate the URL
$url = "https://$base_url.{$locationpath}.?md5=.{$token}.&expires=.{strtotime($expires)}";
}
else{
// Generate the token without expiry
$hashableBase = $securityKey.$ip_addr.$locationpath;//here $ip_addr is optional
$token = md5($hashableBase, true);
$token = base64_encode($token);
$token = strtr($token, '+/', '-_');
$token = str_replace('=', '', $token);
// Generate the URL
$url = "https://$base_url.{$locationpath}.?md5=.{$token}";
}
return $url;
}
// Example usage:
// Returns: '/index.html?md5=IuNSzXOiYkL-LmGJcwxMQg&expires=1488672404'
echo(securityToken('https://test.b-cdn.net', '/index.html','super-secret-code','1488672404','192.128.0.0'));
// Returns: 'https://test.b-cdn.net/index.html?md5=EuS4D8fFlTrT6zO4FymvUw&expires=1488672453'
echo(securityToken('https://test.b-cdn.net', '/index.html','super-secret-code'));
?>
Was this article helpful? If yes, please click on upvote. If you still have technical queries, please write to us at support@psychz.net