• oss存储前端直传向后台请求临时授权(下)


    首先去阿里云下载aliyun-php-sdk-core和aliyun-php-sdk-sts包(上个文章给出了阿里链接文档,里面有下载的地址)

    <?php

    namespace AppHttpControllersApiSts;

    use AlibabaCloudClientAlibabaCloud;
    use AlibabaCloudClientExceptionClientException;
    use AlibabaCloudClientExceptionServerException;
    use AlibabaCloudStsSts;
    use PHPUnitFrameworkTestCase;

    class Controller extends TestCase
    {
    /**
    * @expectedException AlibabaCloudClientExceptionServerException
    * @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
     
  • 相关阅读:
    有效的字母异位词---简单
    字符串中的第一个唯一字符---简单
    整数反转---简单
    使用httpServlet方法开发
    servlet生命周期
    tomcat_user文件的1配置
    selvlet入门自己部署(sevlet接口实现)
    数据库mysql实战
    tomcat的熟悉目录结构
    虚拟主机
  • 原文地址:https://www.cnblogs.com/smilevv/p/13469315.html
Copyright © 2020-2023  润新知