<?php namespace App\Http\Controllers; use AliCloud\Core\Profile\DefaultProfile; use AliCloud\Core\DefaultAcsClient; use AliCloud\Core\Exception\ServerException; use AliCloud\Core\Exception\ClientException; use AliCloud\STS\AssumeRoleRequest; class OssController extends Controller { public function getSts() { $regionID = "cn-zhangjiakou"; $endpoint = "sts.cn-zhangjiakou.aliyuncs.com"; DefaultProfile::addEndpoint($regionID, $regionID, "Sts", $endpoint); $iClientProfile = DefaultProfile::getProfile($regionID, 'LTAIG3B3vMgxdnGg', 'EJY6vwMje1npqZYmIwrmUWlVTiVW18'); $client = new DefaultAcsClient($iClientProfile); // 指定角色ARN $roleArn = "acs:ram::1211062998797452:role/ramoss-sts"; // 在扮演角色时,添加一个权限策略,进一步限制角色的权限 // 以下权限策略表示拥有可以读取所有OSS的只读权限 $policy = <<<POLICY { "Statement": [ { "Action": [ "oss:Get*", "oss:List*", "oss:Put*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" } POLICY; $request = new AssumeRoleRequest(); // RoleSessionName即临时身份的会话名称,用于区分不同的临时身份 $request->setRoleSessionName("alice"); $request->setRoleArn($roleArn); $request->setPolicy($policy); $request->setDurationSeconds(3600); try { $response = $client->getAcsResponse($request); $result['region'] = $regionID; $result['accessKeyId'] = $response->Credentials->AccessKeyId; $result['accessKeySecret'] = $response->Credentials->AccessKeySecret; $result['stsToken'] = $response->Credentials->SecurityToken; $result['bucket'] = 'uptoyo'; return $this->jsonSuccess($result); } catch (ServerException $e) { return jsonError($e->getMessage()); } catch (ClientException $e) { return jsonError($e->getMessage()); } } }