关于oss自签名总是验证通不过的总结
如果我们使用oss存储数据,那么不可避免的需要了解oss存储服务的安全验证方面的东西,其中在初始化oss的时候提供了两种方式的验证:STS鉴权模式 和 自签名模式,本人使用的是 自签名模式 但是在调试过程中着实坑了很久,现将注意事项总结如下帮助需要的人:
使用自签名模式,在初始化oss的时候需要传入OSSCustomSignerCredentialProvider这个类,以android端的代码为例
这个类具体实现示例如下:
OSSCredentialProvider credentialProvider = new OSSCustomSignerCredentialProvider() {@Overridepublic String signContent(String s) {OkHttpClient okHttpClient = new OkHttpClient();String url = null;try {url = ApiStores.API_SERVER_URL + "/aliyun/oss/getPolicy?s=" + URLEncoder.encode(s, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();return null;}Request request = new Request.Builder().url(url).build();Call call = okHttpClient.newCall(request);Response response = null;try {response = call.execute();String string = response.body().string();OssTokenModel token = new Gson().fromJson(string, OssTokenModel.class);return "OSS " + accessKeyId + ":" + token.getSignedString();} catch (Exception e) {e.printStackTrace();}return null;}
};
注意以上代码的:
1,signContent(String s)方法,该方法是在子线程中执行的,那么我们只需在这个线程中调用同步网络请求即可,注意是同步网络请求,该方法是oss异步调用的不会阻塞主线程
2,signContent(String s)方法是oss上传文件时异步回调的方法,方法的参数s已经是完全拼接好的字符串,里面已经包含了所需的全部字段(比如请求类型,文件类型,文件资源路径等),同时,其中也包含了必须的换行符,这一点需要非常注意,因为在与应用server交互的时候有可能会在传输过程中导致换行符丢失,所以我们需要将该字符串s进行转码:URLEncoder.encode(s, "UTF-8");
3,通过应用server得到的签名之后的字符串需要进行拼接"OSS " + accessKeyId + ":" + token.getSignedString();
注意"OSS "这个串右边包含了一个空格符号很容易忽略
4,如第2条所讲,signContent(String s)的参数s已经被oss拼接完成,我们只需要将其转码之后传到后台进行签名即可,后台签名需要先解码,代码如下
@ResponseBody
@RequestMapping("/getPolicy")
public Message getPolicy(@RequestParam String s) throws Exception {String tosign = URLDecoder.decode(s, "UTF-8");String signed = ServiceSignature.create().computeSignature(AccessKeySecret, tosign);Message message = new Message(Message.SUCCESS, signed, "处理成功");return message;
}
其中参数s即为前段传递过来的需要前面的字符串,先将其通过URLDecoder.decode(s, "UTF-8");解码,然后通过ServiceSignature.create().computeSignature(AccessKeySecret, tosign);签名即可
ServiceSignature这个类来自于如下依赖,pom文件中添加如下依赖即可
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.8.1</version>
</dependency>
关于oss自签名总是验证通不过的总结相关推荐
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- (0078)iOS开发之支付宝集成:客户端签名与验证
请各位在看此教程之前请确保你的工程已经集成官方SDK成功,并且没有报错.本教程主要解决签名和验证的问题. 首先说一下简单支付流程: 你提交等待支付的订单信息给支付宝,支付宝返回订单支付结果给你(这里暂 ...
- Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)
转载. 1.此文章主要介绍内容 本文主要介绍如何利用Nginx lua 实现将阿里云OSS存储空间做到同本地磁盘一样使用.核心是利用Nginx lua 对OSS请求进行签名并利用内部跳转将所有访问本地 ...
- 波卡链Substrate (7)Babe协议四“出块签名和验证”
1. 步骤 step1. slot leader更新本地链C使用新块,并发送新块B发送给其他节点 step2. 签名 slk:当前槽 H(l-1):sLk前一个区块的哈希 d:VRF输出 pi:val ...
- Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)
1.此文章主要介绍内容 本文主要介绍怎样利用Nginx lua 实现将阿里云OSS存储空间做到同本地磁盘一样使用.核心是利用Nginx lua 对OSS请求进行签名并利用内部跳转将全部訪问本地Ngin ...
- 验证通扫描仪安装使用方法
安装验证通扫描仪 一. 安装"PCI转COM转接卡"驱动程序. 1. 请将硬件"PCI转COM转接卡"卡插到电脑上,开机. 2. 安装硬件驱动程序. 二.安装扫 ...
- golang 使用RSA生成公私钥,加密,解密,并使用SHA256进行签名,验证
话不多说直接上代码: package mainimport ("crypto""crypto/rand""crypto/rsa"" ...
- C#实现.Net对邮件进行DKIM签名和验证,支持附件,发送邮件签名后直接投递到对方服务器(无需己方邮件服务器)
项目地址 https://github.com/xiangyuecn/DKIM-Smtp-csharp 主要支持 对邮件进行DKIM签名,支持带附件 对整个邮件内容(.eml文件)的DKIM签名进行验 ...
- 编写ATL工程实现ActiveX控件调用cryptoAPI接口(一)------------签名与验证
注:下面的代码中用了Map,Base64,log,Result等都为自定义类型,太长就不一一贴出. [cpp] view plain copy print ? /* * * * 文件名称:Sig ...
最新文章
- saltstack pkg模块用法
- php mysql 遍历 嵌套_PHP / mySQL – 如何将嵌套行提取到multidimensinal数组中
- A Famous Music Composer
- 【虚拟化】docker安装ElasticSearch+Kibana,下载IK分词器
- access 查找工龄大于30_ACCESS查询操作题完整
- Android魔法(第四弹)—— 一步步实现百叶窗效果
- 最优化:**回归/拟合方法总结
- 未定义标识符 stringc/c++(20)_到 2024 年,阿斯顿·马丁汽车销量的 20%以上将是电动汽车...
- Spring boot 出现的时间
- Digital root(数根)
- 小瓦怕扫地机器人_小瓦扫地机器人青春版评测:便宜有好货
- 关于string中的如果使用变量的笔记
- 成人高考专升本- 你需要知道的事情!!
- 教程:使用Java以编程方式将PLT转换为PDF或图像
- laravel项目启动
- hive数据库无主键进行去重SQL
- 咬肌边上有个滑动疙瘩_腮帮子有个滑动的疙瘩是怎么回事
- TML5期末大作业:我的家乡网站设计——我的家乡大连 带登录注册表单 轮播
- 传感器系列之4.7地磁传感器
- php mysql 课件_php课件
热门文章
- docker简介和安装(阿里云加速)以及Springboot项目部署docker,实现局域网下同时访问项目(详细过程)
- Mysql自连接查询
- 苹果微信的分身双开安装和微信其他隐藏功能你知道吗?
- 视频教程-Tableau从入门到大伽视频教程-大数据
- 目标检测模型的评价指标(Acc, Precision, Recall, AP, mAP, RoI)
- 使用electron 将网页打包成应用程序
- 【日常】edge和chrome浏览器截屏工具快捷键
- Mac电脑配置node环境变量
- codeblocks中用第三方库
- MUI+H5开发移动APP/网易邮箱大师项目实战/Android、IOS跨平台应用开发-王翠英-专题视频课程...