全部产品
云市场

CDN 三种鉴权方式的PHP代码

更新时间:2019-03-29 11:49:38

鉴权方式A

  1. //http://DomainName/Filename?auth_key=timestamp-rand-uid-md5hash
  2. //sstring = "URI-Timestamp-rand-uid-PrivateKey" (URI是用户的请求对象相对地址, 如 /Filename)
  3. //HashValue = md5sum(sstring)
  4. function PrivateKeyA(){
  5. $time=strtotime("+8 hours");
  6. $key="youkey";
  7. $domain="http://www.a.com";
  8. $filename="/mulu/1.jpg";
  9. //$sstring = "URI-Timestamp-rand-uid-PrivateKey"
  10. $sstring = $filename."-".$time."-0-0-".$key;
  11. $md5=md5($sstring);
  12. $auth_key="auth_key=".$time."-0-0-".$md5;
  13. $url=$domain.$filename."?".$auth_key;
  14. echo $url."\n";
  15. }

鉴权方式B

  1. //http://DomainName/timestamp/md5hash/FileName
  2. //timestamp:用户访问时客户源服务器的时间,作为URL的一部分,同时作为计算 md5hash 的一个因子,格式为: YYYYMMDDHHMM ,有效时间1800s
  3. //md5hash:以timestamp、FileName和预先设定好的 PrivateKey 共同做MD5获得的字符串,即 md5(PrivateKey + timestamp + FileName)
  4. function PrivateKeyB(){
  5. $time=date("YmdHi");
  6. $key="youkey";
  7. $domain="http://www.a.com/";
  8. $filename="/mulu/1.jpg";
  9. //$sstring = "PrivateKeytimestampFileName"
  10. $sstring = $key.$time.$filename;
  11. $md5=md5($sstring);
  12. $url=$domain.$time."/".$md5.$filename;
  13. echo $url."\n";
  14. }

鉴权方式C

  1. //http://DomainName/{/}/FileName
  2. //md5hash = md5sum()
  3. //time: 用户访问源服务器时间,取 UNIX 时间,以十六进制数字字符表示。
  4. function PrivateKeyC(){
  5. $time2=dechex(time());
  6. $key="youkey";
  7. $domain="http://ww.a.com/";
  8. $filename="/mulu/1.jpg";
  9. //$sstring=PrivateKeyFileNametime
  10. $sstring=$key.$filename.$time2;
  11. $md5=md5($sstring);
  12. $url=$domain.$md5."/".$time2.$filename;
  13. echo $url."\n";

鉴权错误,都会返回 403 报错。

  • Md5计算类错误:X-Tengine-Error:denied by req auth: invalid md5hash=de7bfdc915ced05e17380a149bd760be

  • 时间类报错:X-Tengine-Error:denied by req auth: expired timestamp=1439469547

如果问题还未能解决,请联系售后技术支持