1背景
采用JavaScript SDK 等客户端直接签名时,AccessKeyID和AcessKeySecret会暴露在前端页面,因此存在严重的安全隐患。因此,OBS提供了服务端签名后直传的方案 解决此问题。问题代码如下所示(需要在前端使用ak sk作为初始化条件):
2原理介绍
1.客户端在登陆后,向app server请求上传对象的鉴权token;
2.App server 根据永久AK SK和针对上传对象和桶的policy生成一个token(具体参考后的代码示例)
3.前端组件 收到token后使用post请求将token作为一个表单项进行对象上传。
2.1.2约束限制
1.Post表单上传是单流上传,没法实现断点续传功能。因此比较适合一些小文件的上传。
2.Post上传对于表单域我们采用强校验模式,只要携带的表单域除我们没定义的外都要包含在policy中参与签名计算。具体参考文档描述:https://support.huaweicloud.com/api-obs/zh-cn_topic_0106557184.html
3流程和源码解析
3.1服务端代码
Java SDK 代码示例生成服务端tokenpackage samples_java;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import com.obs.services.ObsClient;
import com.