亚马逊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.hqwc.cn/news/267810.html

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

相关文章

2024年程序员必须掌握的10款开发工具

Chat GPT的升级节奏让人们越来越惊讶的同时&#xff0c;也让大家感觉到了压力&#xff0c;在如此快节奏的互联网世界中&#xff0c;开发人员需要不断学习与更新知识&#xff0c;保持领先地位并高效地交付高质量软件。 无论是集成开发环境 (IDE)、版本控制系统、测试工具、协作…

gcc tips - GCC使用技巧与高级特性

目录 1. 获取 GCC 编译器预定义的宏 2. 列出依赖的头文件 3. 保存预处理结果到文件&#xff08;展开define, 展开include header&#xff09; 4. 写回调跟踪记录函数运行 -finstrument-functions 5. -fdump-rtl-expand 画函数调用关系图 GCC&#xff0c;全称GNU Compiler …

利差是什么?anzo Capital昂首资本换个角度学利差

在交易论坛上最常问也是问的最多的一个问题就是“外汇中的利差是多少?”&#xff0c;今天让anzo Capital昂首资本换个角度试着找出答案。 在现代生活中&#xff0c;我们必须为商品和服务付费&#xff0c;包括金融市场上提供的商品和服务。同样的在金融市场中也需要为商品和服…

MYSQL练题笔记-子查询-电影评分

一、题目相关内容 1&#xff09;相关的表 2&#xff09;题目 3&#xff09;帮助理解题目的示例&#xff0c;提供返回结果的格式 二、自己初步的理解 1.字典序是指从前到后比较两个字符串大小的方法。 首先比较第1个字符&#xff0c;如果不同则第1个字符较小的字符串更小&…

linux(5):linux基础命令第五弹

在linux基础命令第四弹中http://t.csdnimg.cn/tvuNl我们了解了echo、tail命令、管道符和vim文本编辑器的相关内容。这一篇我们会了解关于命令选项的说明 我们在之前的学习中&#xff0c;发现命令中的选项是非常多的&#xff0c;比如-l -c -m -r -w 等等&#xff0c;命令有很多&…

12月11日作业

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示登录成功&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&#xff0c;弹…

Python3 中常见的数据类型

目录 数字(Number)总结 字符串(String)字符串运算符字符串格式化字符串的截取总结 List&#xff08;列表&#xff09;更新列表删除列表元素列表函数&方法总结 Tuple&#xff08;元组&#xff09;修改元组删除元组总结 Set&#xff08;集合&#xff09;Dictionary&#xff0…

Anaconda安装-超详细版(2023)

Anaconda安装 - 超详细版&#xff08;2023&#xff09; 前言&#xff1a;彻底卸载pythonAnaconda下载地址安装详细步骤配置环境变量检验安装是否成功更改conda源&#xff08;后续安装第三方库可以加快速度&#xff09;超详细彻底卸载Anaconda教程Tensorflow-gpu 安装 前言&…

基于FPGA的视频接口之高速IO(光纤)

简介 对于高速IO口配置光纤&#xff0c;现在目前大部分开发板都有配置&#xff0c;且也有说明&#xff0c;在此根据自己的工作经验以及对于各开发板的说明归纳 通过高速IO接口&#xff0c;以及硬件配置&#xff0c;可以实现对于光纤的收发功能&#xff0c;由于GTX的速率在500Mb…

【NR技术】NR NG-RAN整体架构 -网络接口以及无线协议框架(四)

1 引言 本博文介绍NR NG-RAN的网络节点间的接口以及无线协议框架。网络接口介绍包括RAN和NGC之间的NG接口&#xff1b;无线协议框架包括用户面和控制面协议。 2 NG接口 2.1 NG用户面接口 NG-U (user plane interface)是NG-RAN节点与UPF之间的接口。NG接口的用户平面协议栈如图…

算法Day28 二进制差异序列(格雷码)

二进制差异序列&#xff08;格雷码&#xff09; Description n 位二进制差异序列是一个由2^n个整数组成的序列&#xff0c;其中&#xff1a; 每个整数都在范围[0, 2^n - 1]内&#xff08;含0和2^n - 1&#xff09; 第一个整数是0 一个整数在序列中出现不超过一次 每对相邻整数…

sdxl-turbo:adversarial diffusion distillation

【AIGC第三十一篇】SDXL Turbo&#xff1a;一种实时的文本到图像生成模型 - 知乎【 SDXL Turbo通过采用全新的蒸馏技术&#xff0c;实现了最先进的性能&#xff0c;能够以前所未有的质量进行单步图像生成&#xff0c;将所需的步骤数量从50步减少到仅需一步。这种创新技术大大提…