oss存儲前端直傳向后台請求臨時授權(下)


首先去阿里雲下載aliyun-php-sdk-core和aliyun-php-sdk-sts包(上個文章給出了阿里鏈接文檔,里面有下載的地址)和
composer require alibabacloud/client與composer require alibabacloud/sdk(記得使用中國鏡像)


<?php

namespace App\Http\Controllers\Api\Sts;

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Sts\Sts;
use PHPUnit\Framework\TestCase;

class Controller extends TestCase
{
/**
* @expectedException \AlibabaCloud\Client\Exception\ServerException
* @expectedExceptionMessageRegExp /EntityNotExist.Role: The specified Role not exists/
* @throws ClientException
* @throws ServerException
*/
//構建AssumeRole請求
public function stsOss()
{
//構建阿里雲client時需要設置AccessKey IDAccessKey Secret
AlibabaCloud::accessKeyClient('阿里ram用戶id', '阿里ram用戶key')
->regionId('cn-shanghai')(oss存儲地)
->name('default');

$message = Sts::v20150401()
->assumeRole()
//指定角色ARN
->withRoleArn('acs:ram::161364*****:role/*****')(阿里ram用戶的arn)(一定要給權限否則訪問報錯)
//RoleSessionName即臨時身份的會話名稱,用於區分不同的臨時身份
->withRoleSessionName('client_name')

//設置權限策略以進一步限制角色的權限
//以下權限策略表示擁有所有OSS的只讀權限
->withPolicy('{
"Statement":[
{
"Action":
[
"oss:Get*",
"oss:List*"
],
"Effect": "Allow",
"Resource": "*"
}
],
"Version": "1"
}')
->connectTimeout(60)
->timeout(65)
->request();
$code = $message->getStatusCode();
if ($code != 200) {
return response()->json('授權失敗');
}
return response()->json($message['Credentials']);
}

}
成功返回:
{
    "SecurityToken""CAISlwJ1q6Ft5B2yfSjIr5aCfYOCjrJW55eoTG6Di20yXMlnt43g2zz2IHpEenRpCew**/wznWtT6vsZlqJ4T55IQ1Dza8J148yTTKFxtsyT1fau5Jko1beRewHKeSGZsebWZ+LmNpa/Ht6md1HDkAJq3LL+bk/Mdle5MJqP++MFDtMMRVuXYCYEZrZRPRAwjM4BKTmrQpTLCBPxhXfKB0dFoxd1jXgFiZ6y2cqB8BHT/jaYo603392ve8P6M5cxY8ciCYbsh7FMG/CfgHIK2X9j77xriaFIwzDDs+yGDkNZixf8aLCErIA2fFMgN/BmQvUf8KWnj45xvu3CioLw0A1ROuJYVSvSQo26ydfDAvmuMtsp8jh/q7lWVLoagAEgYUmaOMoZ+IsvuJRLD/tAMvqGau29U7LbrZsg8QG0O9Jm1MGQfVEE99t3LkKIkuJVgM59AQFt2jZSjDiAqqJlHJvB9migvgtAk00u4SfCE2C8eQqPLFyJrstRZVlahZXslaq81loR6Qi0dAHN0gPMi3yofh/I0bvZsq+J7noKeQ==",
    "AccessKeyId""STS.NU7696cmwPUCNH2omg*****",
    "AccessKeySecret""37C5pBQX88EiwgVbTPU1QrQifwRLacq7WGTQfP****",
    "Expiration""2020-08-10T06:33:11Z"
}
這是臨時權限token與id和key
 


免責聲明!

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



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