Aliyun oss实现(一),向STS申请临时SecretToken

最近做了一个项目关于aliyun云同步的功能。

结构如下


api层放向外暴露的接口和model类。

sdk层打包客户端的实现类和工厂,向客户暴露。

security层部署至服务器,不向外暴露。


jar包用到以下4个。


sts和ram是给第三方客户(相对于aliyun而言),临时访问bucket的扮演角色(通过sts和ram包中提供的api,可以直接向相应OSS账号申请临时Token),Token中包含四个属性,accessKeyID,accessKeySecret,secretToken,expiration。想要获得临时token,需要一个被赋予了RAM权限的OSS用户的accessKeyID和accessKeySecret</

### 获取和使用阿里云 OSS STS Token 为了获取并使用阿里云OSSSTS(Security Token Service)Token,需先安装必要的Python库。通过命令`pip install --upgrade pip`来更新Pip至最新版本[^1]。接着,依次执行如下指令完成所需SDK的安装: ```bash pip install aliyun-python-sdk-core pip install aliyun-python-sdk-sts ``` 上述操作完成后,可以编写段Python脚本来请求临时访问凭证即STS Token。 创建个名为`get_sts_token.py`文件,在其中加入下面的内容用于初始化客户端以及调用API接口获得令牌数据: ```python from aliyunsdkcore.client import AcsClient from aliyunsdksts.request.v20150401.AssumeRoleRequest import AssumeRoleRequest def get_aliyun_sts(role_arn, session_name='default'): client = AcsClient('<your-access-key-id>', '<your-access-key-secret>', 'cn-hangzhou') request = AssumeRoleRequest() request.set_accept_format('json') request.set_RoleArn(role_arn) request.set_RoleSessionName(session_name) response = client.do_action_with_exception(request) return eval(response.decode()) ``` 此函数接收两个参数:个是角色ARN(`role_arn`);另个是会话名称(`session_name`),默认设置为"default"。注意替换掉模板中的占位符 `<your-access-key-id>` 和 `<your-access-key-secret>` 为自己账户对应的AccessKey ID与Secret。 当成功运行这段代码之后,将会返回包含有临时安全证书的信息字典对象,其中包括了`Credentials`字段下的`Expiration`, `SecurityToken`, `AccessKeyId` 及 `AccessKeySecret`等重要属性值。这些信息可用于后续对OSS资源的操作认证授权过程之中。 对于实际应用来说,通常不会直接暴露用户的长期密钥给前端或其他不可信环境,而是利用服务器端程序向受信任的服务申请短期有效的权限令牌供其使用,从而提高了系统的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值