oss 計算sign簽名 獲取臨時token


獲取臨時token

//獲取臨時token
    function get_token(){
        $url1='https://sts.aliyuncs.com';
        $array=[
            'Action'=>'AssumeRole',
            'SignatureVersion'=>'1.0',
            'Version'=>'2015-04-01',
            'RoleArn'=>ROLE_ARN, //阿里雲角色名稱
            'RoleSessionName'=>ROLE_SESSION_NAME, //阿里雲獲取
            'Format'=>'JSON',
            'Timestamp'=>date('Y-m-d\TH:i:s\Z', time() - date('Z')),
            'AccessKeyId'=>ACCESSKEYID, //阿里雲accesskeyid
            'SignatureMethod'=>'HMAC-SHA1',
            'SignatureNonce'=>substr(md5(rand(1, 99999999)), rand(1, 9), 14)
        ];
        $get_sign=get_sign($array,'GET');//獲取sign簽名 get_sign方法在下方↓
        $array['Signature']=$get_sign['hmac']; //計算完簽名之后,將簽名放入請求數組
        $uri = http_build_query($array);
        $url = 'https://sts.aliyuncs.com/?'.$uri;
        $data=curl_get($url); // 請求方式與獲取sign簽名一致 get
        $data=json_decode($data,true);
        return $data??'';
    }

  

計算簽名sign:

//獲取sign
function get_sign($params,$mothod='GET'){
//獲取簽名
ksort($params); //字典化排序
$stringToSign=strtoupper($mothod).'&'.percentEncode('/').'&'; //precentEncode規范化請求字符串↓
$tmp = "";
foreach ($params as $key => $val) {
$tmp.='&'.percentEncode($key).'='.percentEncode($val);
}
$tmp=trim($tmp,'&');
$stringToSign = $stringToSign.percentEncode($tmp);
$key=ACCESS_KEY_SECRET.'&'; //阿里雲accesskeysecret
$hmac=base64_encode(hash_hmac("sha1",$stringToSign,$key,true));//hash_hmac — 使用 HMAC 方法生成帶有密鑰的哈希值
return ['hmac'=>$hmac,'stringToSign'=>$stringToSign];
}

規范化請求字符串

//規范化請求字符串
    function percentEncode($value = null)
    {
        $en = urlencode($value);
        $en = str_replace("+","%20",$en);
        $en = str_replace("*","%2A",$en);
        $en = str_replace("%7E","~",$en);
        return $en;
    }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM