OSS对象存储Header方式JavaV4签名

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: 本文介绍了如何使用Java代码生成阿里云OSS的V4签名授权。通过设置时间、访问密钥等参数,创建签名请求并输出授权信息。包含两张示意图展示流程和关键步骤。

图片.png 图片.png

package com.example.oss;

import com.aliyun.oss.HttpMethod;
import com.aliyun.oss.common.auth.Credentials;
import com.aliyun.oss.common.auth.DefaultCredentials;
import com.aliyun.oss.common.auth.RequestSigner;
import com.aliyun.oss.common.comm.RequestMessage;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.internal.OSSHeaders;
import com.aliyun.oss.internal.signer.OSSSignerParams;
import com.aliyun.oss.internal.signer.OSSV4Signer;

import java.net.URI;
import java.net.URISyntaxException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

public class OSSSignHeaderV4D3 {
    public static void main(String[] args) throws URISyntaxException {

        //设置时间
        LocalDateTime currentTime = LocalDateTime.now();
        // 设置未来时间为当前时间加上2小时
        LocalDateTime futureTime = currentTime.plus(2, ChronoUnit.HOURS);
        // 截至到秒单位
        LocalDateTime futureTimeTruncated = futureTime.truncatedTo(ChronoUnit.SECONDS);
        // 转换为Date类型
        Date futureDate = Date.from(futureTimeTruncated.atZone(ZoneId.systemDefault()).toInstant());


        String endpoint = "https://oss-cn-chengdu.aliyuncs.com";
        String accessKeyId = "";
        String accessKeySecret = "";
        String token = "";
        String bucketName = "zxxxx";
        String objectName = "1736876762696_976418FFFF.jpg";
        String resourcePath = "/zxxxx/1736876762696_976418FFFF.jpg";
        String url = "https://"+bucketName+".oss-cn-chengdu.aliyuncs.com/";

        Credentials credentials = new DefaultCredentials(accessKeyId,accessKeySecret,token);

        Set<String> additionalHeaderNames = new HashSet<>();
        additionalHeaderNames.add("host");
        additionalHeaderNames.add("x-oss-security-token");


        OSSSignerParams ossSignerParams = new OSSSignerParams(resourcePath,credentials);
        ossSignerParams.setProduct("oss");
        ossSignerParams.setRegion("cn-chengdu");
        ossSignerParams.setExpiration(futureDate);
        ossSignerParams.setAdditionalHeaderNames(additionalHeaderNames);



        RequestSigner requestSigner = OSSV4Signer.createRequestSigner(SignVersion.V4, ossSignerParams);
        //RequestMessage requestMessage = new RequestMessage(bucketName, objectName);
        RequestMessage requestMessage = new RequestMessage(bucketName, objectName);
        requestMessage.setMethod(HttpMethod.GET);
        URI enp =new URI(endpoint);
        //requestMessage.setEndpoint(enp);
        //requestMessage.setResourcePath(resourcePath);

        requestSigner.sign(requestMessage);

        System.out.println("Authorization:"+requestMessage.getHeaders().get(OSSHeaders.AUTHORIZATION));
        System.out.println("x-oss-date:"+requestMessage.getHeaders().get(OSSHeaders.OSS_DATE));
        System.out.println("x-oss-security-token:"+requestMessage.getHeaders().get("x-oss-security-token"));
        System.out.println("URL:"+url+objectName);


    }
}
相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
相关文章
|
7月前
|
存储 Cloud Native 容灾
阿里云对象存储(OSS):企业数字化转型的核心存储引擎
阿里云对象存储(OSS)是全球领先的云原生存储服务,提供无限扩展的存储容量、高达12个9的数据持久性以及企业级安全防护。它支持智能分层存储降低成本,通过CDN加速实现高性能访问,并深度集成阿里云生态,适用于海量静态资源分发、大数据分析、备份容灾等场景。OSS以全生命周期管理与开发者友好工具助力企业高效、安全地释放数据价值,推动数字化转型。
2153 15
|
7月前
|
存储 弹性计算 数据管理
阿里云OSS对象存储收费标准价格表:流量包+存储包2025最新整理
阿里云OSS对象存储2025收费标准及请求费用等,提供按量付费与包年包月两种模式。标准型本地冗余存储按量价为0.09元/GB/月,包年包月如500GB仅118.99元/年。流量费仅收公网出方向,闲时0.25元/GB、忙时0.5元/GB。更多详情见官网。
3186 2
|
9月前
|
存储 前端开发 开发工具
利用阿里云OSS(对象存储服务)快速搭建私人网盘
本文介绍了如何使用阿里云OSS搭建个人网盘的详细步骤。首先,注册阿里云账号并开通OSS服务,创建Bucket;接着,配置AccessKey和跨域访问(CORS)规则。然后,选择开源项目(如FileBrowser)或自定义前端,结合OSS SDK实现文件上传下载功能。最后,部署到服务器并绑定域名,确保安全与性能优化,如权限控制、数据备份及CDN加速。
2000 7
|
11月前
|
安全 对象存储
OSS对象存储JavaV4签名
本文介绍了如何使用阿里云OSS-SDK生成V4版本的签名URL和Header签名。通过设置时间、访问密钥等参数,代码示例展示了如何创建带有V4签名的请求,适用于安全访问对象存储服务。相关文档链接提供了更多详细信息。
826 7
|
25天前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
3月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
3月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
9月前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
228 0