SpringBoot 通过STS获取阿里云临时凭证并访问OSS

进入OSS控制台创建桶,配置需求根据实际修改,地域选择理你近的

在这里插入图片描述

去RAM控制台创建角色

在这里插入图片描述

创建用户,记得打开OpenAPI调用,记得保存AccessKey和AccessKey Secret

在这里插入图片描述

创建导入STS权限

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

给创建好的用户添加权限在这里插入图片描述

在这里插入图片描述

创建角色并授权与用户一样的权限

在这里插入图片描述

引入依赖

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-sts</artifactId>
	<version>3.1.2</version>
</dependency>

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>sts20150401</artifactId>
	<version>1.1.4</version>
</dependency>

<dependency>
	<groupId>com.aliyun</groupId>
	<artifactId>aliyun-java-sdk-core</artifactId>
	<version>4.6.0</version>
</dependency>

阿里云配置类

@Configuration
public class ALiYunOSSConfig {
    // accesskeyid
    public static final String ACCESSKEYID = "LTAI...";
    // accesskeysecret
    public static final String ACCESSKEYSECRET = "xwe...";
    // 地区
    public static final String REGIONID = "cn-shenzhen";
    // 角色 Arn
    public static final String ROLEARN = "acs:ram...";

    @Bean
    public IAcsClient client() {
        DefaultProfile profile = DefaultProfile.getProfile(REGIONID, ACCESSKEYID, ACCESSKEYSECRET);
        return new DefaultAcsClient(profile);
    }
}
@Autowired
private IAcsClient client;

public Map<String, Object> aliyunCertificate() {
    AssumeRoleRequest request = new AssumeRoleRequest();
    request.setRoleArn(ALiYunOSSConfig.ROLEARN);
    request.setRoleSessionName(UUIDGenerator.generate());
    AssumeRoleResponse response = null;
    try {
        response = client.getAcsResponse(request);
    } catch (ClientException e) {
        throw new RuntimeException(e);
    }
    Map<String, Object> map = new HashMap<>();
    map.put("securityToken", response.getCredentials().getSecurityToken());
    map.put("expiration", response.getCredentials().getExpiration());
    map.put("accessKeySecret", response.getCredentials().getAccessKeySecret());
    map.put("accessKeyId", response.getCredentials().getAccessKeyId());
    map.put("regionid", ALiYunOSSConfig.REGIONID);
    return map;
}

使用临时凭证上传文件

@GetMapping("/temp-upload")
public Result<?> temCertificate() {
    String tempSecretId = "STS.NU...";
    String tempSecretKey = "B6oGWqX...";
    String sessionToken = "CAIS0wJ1q6Ft5B2yfSjIr5bN...";
    String regionid = "cn-shenzhen";
    String endpoint = "https://oss-" + regionid + ".aliyuncs.com";
	String bucket = "桶的名称"
    OSS ossClient = new OSSClientBuilder().build(endpoint, tempSecretId, tempSecretKey, sessionToken);
    PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, "1.png", new File("C:\\Users\\pc\\Desktop\\1.png"));
    
    ossClient.putObject(putObjectRequest);

    return Result.ok();
}

官方文档

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值