php 使用STS临时凭证 访问私有 oss
封面图
•
2025-10-25
•
PHP
178
0
0
0
在 PHP 中使用 **STS(Security Token Service)临时凭证** 访问 **私有 OSS(Object Storage Service)**,通常涉及以下几个步骤: --- ## ✅ 一、准备工作 1. **获取 STS 临时凭证** 你需要从阿里云的 STS 服务中获取以下三个参数: - `AccessKeyId` - `AccessKeySecret` - `SecurityToken` 这些信息可以通过阿里云控制台或 SDK 获取。注意:STS 凭证是临时的,有效期较短(一般为 1 小时)。 2. **OSS Bucket 配置权限** 确保你的 OSS Bucket 是 **私有(Private)** 的,并且通过 RAM 用户或角色授权给 STS 临时凭证访问该 Bucket。 --- ## ✅ 二、PHP 使用 STS 临时凭证访问 OSS ### 1. 安装阿里云 OSS SDK(推荐使用 Composer) ```bash composer require aliyuncs/oss-sdk-php ``` ### 2. 示例代码(使用 STS 临时凭证访问私有 OSS) ```php <?php require 'vendor/autoload.php'; use OSS\OssClient; use OSS\Core\OssException; // STS 临时凭证 $accessKeyId = 'your-sts-access-key-id'; $accessKeySecret = 'your-sts-access-key-secret'; $securityToken = 'your-sts-security-token'; // OSS 配置 $endpoint = 'oss-cn-hangzhou.aliyuncs.com'; // 根据你的 Bucket 所在地域修改 $bucket = 'your-private-bucket-name'; try { $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false, $securityToken); // 示例:上传文件 $object = 'test.txt'; $content = 'Hello, OSS!'; $ossClient->putObject($bucket, $object, $content); echo "上传成功!"; } catch (OssException $e) { echo "发生错误:" . $e->getMessage(); } ``` --- ## ✅ 三、说明 - `OssClient` 构造函数第四个参数是 `false`,表示不使用 HTTPS。 - 第五个参数是 `SecurityToken`,用于传递 STS 临时凭证的 token。 - 如果你使用的是 **RAM 角色** 而不是 STS,也可以使用 `AssumeRole` 来获取临时凭证。 --- ## ✅ 四、使用 RAM Role 获取临时凭证(可选) 如果你希望通过 RAM Role 获取临时凭证,可以使用如下方式: ```php use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Core\DefaultAcsClient; use Sts\Request\V20150403\AssumeRoleRequest; // 初始化 Profile $profile = DefaultProfile::getProfile( 'cn-hangzhou', // 地域 'your-long-term-access-key-id', 'your-long-term-access-key-secret' ); $client = new DefaultAcsClient($profile); $request = new AssumeRoleRequest(); $request->setRoleArn('acs:ram::1234567890123456:role/YourRoleName'); $request->setRoleSessionName('session-name'); $request->setDurationSeconds(3600); // 有效时间,单位秒 $response = $client->getAcsResponse($request); $stsAccessKeyId = $response->Credentials->AccessKeyId; $stsAccessKeySecret = $response->Credentials->AccessKeySecret; $stsSecurityToken = $response->Credentials->SecurityToken; ``` 然后将这些值传入上面的 `OssClient` 构造函数即可。 --- ## ✅ 五、注意事项 - **临时凭证的有效期**:通常为 1 小时,需在有效期内使用。 - **权限控制**:确保 STS 临时凭证只拥有访问特定 OSS Bucket 的权限。 - **HTTPS**:生产环境建议使用 HTTPS,设置 `true` 作为第四个参数。 --- ## ✅ 六、参考文档 - [阿里云 OSS PHP SDK 文档](https://help.aliyun.com/document_detail/39522.html) - [阿里云 STS 服务文档](https://help.aliyun.com/product/28957.html) --- 如需我帮你生成完整的项目结构或封装成类,请告诉我具体需求。
上一篇:
DedeCMS使用教程1:频道管理---网站栏目管理
下一篇:
React 安装
标题录入,一次不能超过6条
留言
评论