Skip to content

DiscuzXQCloudStsBase — 腾讯云 STS 处理基类

  • 文件位置: kernel/Platform/DiscuzX/Foundation/Storage/QCloud/QCloudSTS/DiscuzXQCloudStsBase.php
  • 命名空间: kernel\Platform\DiscuzX\Foundation\Storage\QCloud\QCloudSTS
  • 继承: 无(普通类)
  • 是否可继承: 是

腾讯云 STS 临时密钥请求的核心处理类,适配 Discuz!X 环境(使用 DiscuzXQCloud 基类能力发送请求),封装 STS 请求参数组装与响应解析。参考官方 SDK:https://github.com/tencentyun/qcloud-cos-sts-sdk/tree/master/php

属性

可见性名称类型默认值说明
protected$SecretIdstringnull云 API 密钥 Id
protected$SecretKeystringnull云 API 密钥 Key
protected$Configarray见下请求配置
private$STSClientDiscuzXQCloudnull请求客户端实例

$Config 默认包含:

默认值说明
urlhttps://sts.tencentcloudapi.com/STS 接口地址
domainsts.tencentcloudapi.com请求域名
proxy代理
schemehttps协议
path/路径
methodPOST请求方法
secretId / secretKeynull密钥
regionap-guangzhou地域
hoststs.tencentcloudapi.comHost 头

构造

php
function __construct($secretId, $secretKey, $policy, $durationSeconds, $region)
  • $secretId / $secretKey:云 API 密钥
  • $policy(array):STS 权限策略
  • $durationSeconds(int):有效期(秒)
  • $region(string):地域

创建 DiscuzXQCloud 实例,更新 $Config 中的密钥、地域与有效期。

方法

getTempKeys — 获取临时密钥

php
function getTempKeys()

逻辑

  1. 生成 TimestampRequestClientNonce
  2. 发送 POST 请求 sts.tencentcloudapi.com,Action 为 GetFederationToken,Version 2018-08-13,Body 含 NamePolicy(JSON)、DurationSeconds
  3. 解析响应 Credentials:提取 TmpSecretIdTmpSecretKeyTokenExpiredTimeStartTime
  4. 返回数组:
字段说明
credentials临时凭证原始信息
tmpSecretId临时密钥 Id
tmpSecretKey临时密钥 Key
sessionToken安全令牌
startTime起始时间(毫秒时间戳)
expiredTime过期时间(毫秒时间戳)

使用

通常通过 DiscuzXQCloudSTS::getTempKeys() 间接调用。