阿里雲OSS生成sts令牌


業務場景:
如果前端直接上傳文件到OSS,勢必要暴露令牌,無法精准控制上傳內容等,使用臨時令牌即可解決這個問題.

先去阿里雲后台設置好token,角色,地區等

pom.xml

 <dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
 </dependency>

生成阿里雲臨時安全令牌(Security Token Service,STS)

@Service
public class OssServicesImpl implements OssServices {

    @Value("${oss.AccessKeyId}")
    private String AccessKeyId;
    @Value("${oss.accessKeySecret}")
    private String accessKeySecret;
    @Value("${oss.roleArn}")
    private String roleArn;
    @Value("${oss.regionId}")
    private String regionId;


    /**
     * 生成臨時令牌,用來上傳文件到oss
     * @param roleSessionName 用戶角色標識符號,格式:^[a-zA-Z0-9\.@\-_]+$ 2-50個字符
     * @return 臨時令牌
     */
    @Override
    public AssumeRoleResponse getSTS(String roleSessionName) {

        DefaultProfile profile = DefaultProfile.getProfile(regionId, AccessKeyId, accessKeySecret);
        IAcsClient client = new DefaultAcsClient(profile);
        AssumeRoleRequest request = new AssumeRoleRequest();
        request.setRoleArn(roleArn);


        request.setRoleSessionName(roleSessionName);

        request.setDurationSeconds(1000L); // 設置憑證有效時間

        try {
            return client.getAcsResponse(request);
        } catch (ClientException e) {
            System.out.println("Failed:");
            System.out.println("Error code: " + e.getErrCode());
            System.out.println("Error message: " + e.getErrMsg());
            System.out.println("RequestId: " + e.getRequestId());
        }
        return null;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM