亚马逊S3V4验签与MINIO验签区别

1、先看下官方文档

AWS S3V4 DEMO

2、实际调用试试

1)代码

// 计算auth// for a simple GET, we have no body so supply the precomputed 'empty' hashMap<String, String> headers = new HashMap<String, String>();headers.put("x-amz-content-sha256", AWS4SignerBase.EMPTY_BODY_SHA256);headers.put("x-amz-date","20231212T013128Z");// 如果是putObject,并且只有minio才多计算String md5Hash = Digest.ZERO_MD5_HASH;headers.put("Content-MD5",md5Hash);URL endpointUrl = new URL("http://192.168.21.61:9000/aaa/client_1/20231201/2023120110242247663528991.jpg");String regionName = "us-east-1";AWS4SignerForAuthorizationHeader signer = new AWS4SignerForAuthorizationHeader(endpointUrl, "GET", "s3", regionName);String authorization = signer.computeSignature(headers,null, // no query parametersAWS4SignerBase.EMPTY_BODY_SHA256,"aaa","aaa@12345");log.info("authorization={}",authorization);// place the computed signature into a formatted 'Authorization' header// and call S3headers.put("Authorization", authorization);

2)需要微调的地方

3、与MINIO不同的地方

minio调用流程,以getObject为例子

io.minio.MinioClient#getObject ->

io.minio.MinioAsyncClient#getObject ->

io.minio.S3Base#executeAsync(io.minio.http.Method, io.minio.BaseArgs, com.google.common.collect.Multimap<java.lang.String,java.lang.String>, com.google.common.collect.Multimap<java.lang.String,java.lang.String>, java.lang.Object, int) ->

io.minio.S3Base#executeAsync(io.minio.http.Method, java.lang.String, java.lang.String, java.lang.String, okhttp3.Headers, com.google.common.collect.Multimap<java.lang.String,java.lang.String>, java.lang.Object, int) ->

重点

分别设置头信息与签名

与AWS官方demo不同,里面会对header中的Content-MD5单独做个计算。

如果想要计算拉通,需要手动对其单独计算一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/215650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

0013Java安卓程序设计-ssm酒品移动电商平台app

文章目录 **摘要**目录系统实现5.1 APP端5.2管理员功能模块开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析…

Firewalld 防火墙配置

文章目录 Firewalld 防火墙配置1. Firewalld 概述2. 区域名称及策略规则3. Firewalld 配置方法4. Firewalld 参数和命令5. Firewalld 两种模式6. Firewalld 使用 Firewalld 防火墙配置 1. Firewalld 概述 firewalld 是一个动态防火墙管理器&#xff0c;作为 Systemd 管理的防…

【docker】常用命令

启动docker服务 systemctl start docker 停止docker服务 systemctl stop docker 重启docker服务 systemctl restart docker 查看docker服务状态 systemctl status docker 设置开机启动docker服务 systemctl enable docker 设置关闭开机启动docker服务 systemctl disable …

数据在内存中的存储(浮点型篇)

1.例子&#xff1a;5.5&#xff1a;内存存储为101.1&#xff0c;十分位百分位依次为2的-1次方&#xff0c;2的-2次方&#xff0c;而使用科学计数法可以改写为1.011*2的2次方 2.国际标准公式&#xff1a;-1的D次方*M*2的E次方&#xff0c;x1负0正 3.M在存储时默认整数部分为1&…

使用Spring Boot和领域驱动设计实现模块化整体

用模块化整体架构编写的代码实际上是什么样的&#xff1f;借助 Spring Boot 和 DDD&#xff0c;我们踏上了编写可维护和可演化代码的旅程。 当谈论模块化整体代码时&#xff0c;我们的目标是以下几点&#xff1a; 应用程序被组织成模块。每个模块解决业务问题的不同部分。模块…

springcloud微服务篇--1.认识微服务

一、服务架构演变。 单体架构&#xff1a; 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a;架构简单 &#xff0c;部署成本低。 缺点&#xff1a;耦合度高 分布式架构 根据业务功能对系统进行拆分&#xff0c;每个业务模块作为独立项…

[idea]idea连接clickhouse23.6.2.18

一、安装驱动 直接在pom.xml加上那个lz4也是必要的不然会报错 <dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.4.2</version></dependency><dependency><group…

歌唱比赛计分 (8 分)设有10名歌手(编号为1-10)参加歌咏比赛

未采用结构体的解法&#xff0c;通过二维数组解题 #include <stdio.h> void rank(int arr[10][6] ) { int str[4] { 0 }; int a1[6] { 0 }; int k 0; int i 0; int z 0; int j 0; int temp 0; double s1[10][2] { 0 }; dou…

(1)mysql容器化部署

mysql容器化部署&#xff1a; 数据持久化&#xff08;方便数据保存及迁移&#xff09;: 需要持久化两个目录: 创建/mysql (1)mysql配置文件: /mysql/mysql-cnf/my.cnf vim my.cnf [mysqld] pid-file /var/run/mysqld/mysqld.pid socket /var/run/mysqld/…

【51单片机系列】使用74HC595控制数码管显示

使用74HC595结合数码管显示字符。 proteus仿真设计如下&#xff0c;74HC595的输出端连接到动态数码管的位选和静态数码管的段选&#xff0c;动态数码管的段选连接到P0口。这两个数码管都是共阴极的。 静态数码管显示字符0-F&#xff0c;软件设计如下&#xff1a; /*实现功能&a…

Java:SpringBoot获取当前运行的环境activeProfile

代码示例 /*** 启动监听器*/ Component public class AppListener implements ApplicationListener<ApplicationReadyEvent> {Overridepublic void onApplicationEvent(ApplicationReadyEvent event) {// 获取当前的环境&#xff0c;如果是test&#xff0c;则直接返回Co…

redis实际应用实现合集

一、redis实现抢红包的功能&#xff08;set 数据结构&#xff09; 分两种情况&#xff1a; 情况一: 从10个观众中随机抽2名幸运观众 首先需要把10个观众的id&#xff08;具体是什么id可以根据实际业务情况自己定义&#xff09;放到redis 的 set 集合里 然后随机抽取2名幸运…

【hcie-cloud】【8】华为云Stack_LLD设计【部署设计、资源设计、服务设计、学习推荐、缩略语】【下】

设计概览、整体架构设计、网络设计 看下面-这篇文章 【hcie-cloud】【7】华为云Stack_LLD设计【设计概览、整体架构设计、网络设计、部署设计、资源设计、服务设计】【上】 部署设计 云平台整体部署架构 图中在Region下每个灰底都代表一个数据中心&#xff0c;AZ1可以跨数据…

yarn系统架构与安装

1.1 YARN系统架构 YARN的基本思想是将资源管理和作业调度/监视功能划分为单独的守护进程。其思想是拥有一个全局ResourceManager (RM)&#xff0c;以及每个应用程序拥有一个ApplicationMaster (AM)。应用程序可以是单个作业&#xff0c;也可以是一组作业。 一个ResourceManage…

ai智能机器人外呼系统怎么操作?

什么是ai智能机器人外呼&#xff1f;ai智能机器人外呼怎么操作&#xff1f;当下&#xff0c;很多企业主已经认识到&#xff0c;AI外呼是一种高效的拉新引流手段。但具体到实际应用中&#xff0c;实现的效果好像并没有那么理想。从企业外呼的结果来看&#xff0c;接通率是可以达…

【信息安全】-ISO/IEC 27001-2022(翻译)

文章目录 范围规范性引用文件3 术语和定义4 组织环境&#xff08;P&#xff09;4.1 理解组织及其环境4.2 理解相关方的需求和期望组织应确定:a) 信息安全管理体系相关方;b) 这些相关方的相关要求;c) 哪些要求可以通过信息安全管理体系得到解决。注:相关方的要求可包括法律、法规…

Ceph入门到精通-ceph二次开发开源协议考虑

Ceph 是一个开源的分布式存储系统&#xff0c;它由多个组件组成&#xff0c;包括分布式对象存储&#xff08;RADOS&#xff09;、分布式块存储&#xff08;RBD&#xff09;和分布式文件系统&#xff08;CephFS&#xff09;等。Ceph 采用了 GNU Lesser General Public License&a…

kuboard如何部署nacos?

​ kuboard如何部署nacos&#xff1f; 这个快速开始手册是帮忙您快速在您的电脑上&#xff0c;下载、安装并使用 Nacos。 项目包含一个可构建的Nacos Docker Image&#xff0c;旨在利用StatefulSets在Kubernetes上部署Nacos。 在高级使用中,Nacos在K8S拥有自动扩容缩容和数据…

“华为杯”研究生数学建模竞赛2019年-【华为杯】B题:天文导航中的星图识别

目录 摘 要: 一、问题重述 二、模型假设 三、符号说明 四、问题分析