认证小米开放文件存储

小米开放  时间:2021-05-08  阅读:()

小米开放文件存储(FD S)用户指南

1. 小米开放文件存储(FD S)简介

1.1 FDS综述

小米开放文件存储(File Storage Service,简称FDS) 是小米开放平台所提供的众多云服务之中的一种。 FDS向开发者提供了简洁直观的Restful API开发者可以直接通过标准Http协议来调用FDS的API同时为了方便广大开发者 FDS目前提供了Java、PHP和Android平台的SDK开发者可以根据自己的应用需求选用合适的SDK。

1.2 FDS的优势

FDS专注于提供使用简便、可靠的文件存储服务下面是FDS服务的一些优势:

 简单的数据模型 FDS采用了Bucket/Object数据模型跟业内主流系统保持一致方便开发者理解 降低使用门槛

 直观易用的API FDS提供了简洁的Restful API,开发者可以通过标准Http协议直接访问 完善的认证与授权机制 FDS支持各种身份认证机制包括签名、OAuth2.0和小米SSO认证  FDS还支持了完备的授权管理机制最大程度的保护用户数据的安全

 弹性高可用的服务质量 FDS架构上支持良好的水平扩展性对用户提供7x24高可用的服务

 灵活的应用场景:支持的文件大小不受限制能很好地适应更种应用场景 低廉的存储成本:支持Reed-Solomo n编码在保证数据可靠性的前提下能够最大程度地节约存储成本。

1.3 FDS的基本概念

桶(Bucket) : Bucket是存储Obj ect的容器在同一个Region内 Bucket是全局唯一的。每个Object都存在于某一个Bucket中一个Bucket里面可以包含很多个Object。

对象(Object) : Object是用户实际存储在FDS中的数据包括用户存储的文件内容和文件相关的元信息它们合在一起统称为Object。

区域(Region) : Region是物理上数据中心的划分一个数据中心的FDS称之为一个Region。 同一个Region内的Bucket在该Region内是全局唯一的。

2. 用户身份认证

2.1签名认证

本部分介绍FDS中用到的签名认证的基本原理。

2.1.1基本概念

本部分介绍FDS中用到的签名认证的基本原理。

使用FDS服务的签名算法需要了解以下基本概念:

 App Access Key:开发者在小米开放平台申请的App Access Key,用于标识开发者的App

 App Secret Key: 开发者在小米开放平台申请App Access Key时颁发的AppSecret Key,这个由用户自己保存是用来做签名时的密钥

 Signature:根据Access Key Secret Key和用户请求计算出的数字签名用于验证用户身份。

2.1.2基于签名的认证过程

1. 构建准备发往FDS的Http请求

2. 使用App Secret Key和构建好的请求内容计算签名

3. 将计算好的签名和 App Access Key 组合起来 置于 Http请求的“authorization” Header中将请求发往FDS;

4. FDS收到请求从”authorization” Header中解析中App Access Key和对应的签名;

5. FDS用解析出的App Access Key获取到对应的App Secret Key;

6. FDS用App Secret Key和请求内容进行签名得到服务端签名;

7. FDS对比服务端签名和用户请求解析出来签名如果一致刚认证通过否则认证不通过。

注意: App Secret Key不会在上述请求过程中传输。

2.1.3签名算法

签名算法是签名认证的核心 以下是签名算法的详细介绍:

签名在Http头中的格式: “author ization: Galaxy-V2“ + “ “+App Access Key+ “:” + Signature 

签名计算: Signature = Base 64 (Hmac-Sha1 (AppAcc essSecret,

StringToSign) ) ;

签名字符串(String ToSign)的构造:

StringToSign = HttpMe thod + “\n” +content-md5 + “\n” +content-type + “\n” +date + “\n” +

CanonicalizedHeade rs +

CanonicalizedResou rce;

Canoni calize dHeade rs构造:

用户可以通过“x-xiaomi-“的方式 向FDS传自定义的Header,

CanonicalizedHeade rs指的是规范化过之后的用户自定义的Header s规范化的过程如下:

1. 所有的Header都要转成全小写

2. 将Heade r按Key进行字典序排序

3. 将具有相关Key的Headers合并多个值之间用”,”分隔

4. 将上述字符串连接起来即是CanonicalizedHeade rs。

CanonicalizedResou rce构造: Cannon icaliz edReso urce是由用户请求的Uri的相对路径加上FDS预定义的SubResou rce(Acl等)相关的参数组成的。

2.1.4签名库

FDS目前提供了C++/Java/PHP版本的签名库详细的签名算法可以参见具体的签名库的实现。

3. Bucket操作REST API指南

3.1列所有Bucket

语义:列出当前用户所拥有的所有Buckets

语法:

GET / HTTP/1.1Host: files.fds.api.xiaomi.comDate: dateAuthoriz ation: authorization_string

请求参数:无

请求头:

是否

字段 取值 必须 描述

Date 字符串需符合Http协议定义 是 请求的当前时间Authorizatio n 身份认证字符串跟选用的认证机制有关具体格式 是 目前支持Signature/OAut

为 种方式的认证选择合适的使

 1.签名认证: “Ga“la“xy_V2” + “ “ +

AppAccessKey + : + Signat ure

 2.OAuth 2.0认证: “OAuth”

 3.小米SSO认证: “SSO”

3.2创建新Bucket

语义:创建指定名字的Bucke t

语法:

PUT /bucket_name HTTP/1.1Host: files.fds.api.xiaomi .comDate: dateContent-Length: content_lengthAuthorization: authorization_string

请求参数:

参数 取值 是否必须 描述acl 无 否 正常创建Bucket时不需要如果要修改Bucket的ACL信息需要指定该参数请求头:

是否

字段 取值 必须 描述

Date 字符串需符合Http协议定义 是 请求的当前时间

Authorizatio n 身份认证字符串跟选用的认证机制有关具体 是 目前支持Signatur e/OAuth 2

格式为 式的认证选择合适的使用

 1.签名认证: “Galaxy_V2” + “ “ +

AppAccessKey + “:“ + Signature

 2.OAuth 2.0认证: “OAuth”

 3.小米SSO认证: “SSO”

Content-Length 整数值, body的长度 是 创建Bucket时Body长度为

是否

字段 取值 必须 描述

时 Body长度为对应的JSON

3.3列Bucket下面的Object

语义:列出指定Bucket下面所有的Objects

语法:

GET /bucket_name HTTP/1.1Host: files.fds.api.xiaomi .comDat e: dateAuthoriz ation: authorization_string

请求参数:

是否

参数 取值 必须 描述acl 无 否 用于获取指定Bucket的ACL信息uploads 无 否 用于获取指定Bucket下正在进行的Multipart Uploadprefix 字符串 否 列指定前缀的所有Objectsdelimiter 字符缺省为’/’ 否 Object名字中的分隔符用来生成Common Prefixmarker 字符串 否 当一个Bucket下面的Obj ect数量大于maxKeys时会分

表示当前批次的起始Object名字(字典序)maxKeys 在(0, 1000]范围内的整 否 当一个Bucket下面有比较多的Object数量的时候需

数缺省为1000 maxKeys表示每个批次可返回Object数的最大值请求头:

是否

字段 取值 必须 描述

Date 字符串需符合Http协议定义 是 请求的当前时间Authorizatio n 身份认证字符串跟选用的认证机制有关具体格式 是 目前支持Signature/OAut

为 种方式的认证选择合适的使

 1.签名认证: “Galaxy_V2” + “ “ +

AppAccessKey + “:“ + Signat ure

 2.OAuth 2.0认证: “OAuth”

是否

字段 取值 必须 描述

 3.小米SSO认证: “SSO”

3.4删除Bucket

语义:删除指定名字的Bucke t

语法:

DELETE /bucket_name HTTP/1.1Host: files.fds.api.xiaomi.comDat e: dateAuthorization: authorization_string

请求参数:无

请求头:

是否

字段 取值 必须 描述

Date 字符串需符合Http协议定义 是 请求的当前时间Authorizatio n 身份认证字符串跟选用的认证机制有关具体格式 是 目前支持Signature/OAut为 种方式的认证选择合适的使 1.签名认证: “Galaxy_V2” + “ “ +

AppAccessKey + “:“ + Signat ure

 2.OAuth 2.0认证: “OAuth”

 3.小米SSO认证: “SSO”

3.5判断Bucket存在性

语义:判断指定的Bucket是否存在

语法:

HEAD /bucket_name HTTP/1.1Host: files.fds.api.xiaomi.comDat e: dateAuthoriz ation: authorization_string

请求参数:无

请求头:

是否

字段 取值 必须 描述

Date 字符串需符合Http协议定义 是 请求的当前时间Authorizatio n 身份认证字符串跟选用的认证机制有关具体格式 是 目前支持Signature/OAut

为 种方式的认证选择合适的使

 1.签名认证: “Ga“la“xy_V2” + “ “ +

AppAccessKey + : + Signat ure

 2.OAuth 2.0认证: “OAuth”

 3.小米SSO认证: “SSO”

4. Object操作REST API指南

4.1上传Obje ct (PUT)

语义:上传指定名字的Object到指定的Bucket下 同名Object为覆盖语义

语法:

PUT /bucket_name/object_name HTTP/1. 1

Host: files.fds.api.xiaomi .comDate: date

Authorization: authorization_stringbody

请求参数:

是否必

参数 取值 须 描述uploads 无 否 Multipart Upload开关传该参数就表示当前的Upload是一个MpartNumber 整数 否 Multipart Upload的part序号用于表示当前上传的是第多少个renameTo 字符串 否 用来对Obj ect进行重命名值是重命名后的Object名字acl 无 否 ACL开关传该参数表示给当前的Obj ect设置ACLexpires 整数毫秒 否 上传成功返回的Pre-signed URI的过期时间不传的话默认为3请求头:

字段 取值 须 描述

Date 字符串需符合Http协议定义 是 请求的当前时间

Authorizatio n 身份认证字符串跟选用的认证机制有关具 是 目前支持Signatur e/OAuth2

体格式为 式的认证选择合适的使用

 1.签名认证: “Galaxy_V2” + “ “+

AppAcc essKey + “:“ +

Signature

 2.OAuth 2.0认证: “OAuth”

 3.小米SSO认证: “SSO”

Content-Length 整数值, body长度 是 body内容的字节长度Content-Type 字符串, body类型 否 body内容的类型缺省会根据

识别不能识别的缺省为置为binary/octet-streamContent-MD5 字符串, Base64 (body MD5) 否 用于检验body内容正确性Cache-Contro l 字符串需符合Http协议定义 否 用来控制对当前Object的缓存Content-Encoding 字符串需符合Http协议定义 否 用来指定Object内容的编码方Last-Modified 字符串需符合Http协议定义 否 用来指定Object最后一次更新x-xiaomi-meta- 字符串用户自定义的的元信息 否 以x-xiaomi-meta-为前缀

的元信息

4.2上传Object (POST)

语义:上传不指定名字的Object到指定的Bucket下 由服务端生成唯一的名字

语法:

POST /bucket_name HTTP/1.1Host: files.fds.api.xiaomi.comDat e: dateAuthoriz ation: authorization_string

请求参数:

是否必

参数 取值 须 描述uploads 无 否 Multipart Upload开关此处用于初始化一个不指定Object名字的Mexpires 整数毫秒 否 过期时间该值用于上传成功返回的Pre-signed URI的过期不传的话请求头:与通过PUT上传Object的相同

4.3下载Object

语义:从指定的Bucket下载指定的Object

语法:

GET /bucket_name/object_name HTTP/1.1Host: files.fds.api.xiaomi.comDat e: dateAuthorization: authorization_string

请求参数:

参数 取值 是否必须 描述acl 无 否 获取Object ACL信息的开关打开时 GET的结果是对应Object的Ametadata 无 否 获取Object元数据的开关打开时 GET的结果是对应Object的元数请求头:

是否

字段 取值 必须 描述

Date 字符串需符合Http协议定义 是 请求的当前时间Authorizatio n 身份认证字符串跟选用的认证机制有关具体格式 是 目前支持Signature/OAut

为 种方式的认证选择合适的使

 1.签名认证: “Galaxy_V2” + “ “ +

AppAccessKey + “:“ + Signat ure

 2.OAuth 2.0认证: “OAuth”

 3.小米SSO认证: “SSO”

4.4删除Object

语义:从指定的Bucket下删除指定的Object

语法:

易探云:香港物理机服务器仅550元/月起;E3-1230/16G DDR3/SATA 1TB/香港BGP/20Mbps

易探云怎么样?易探云(yitanyun.com)是一家知名云计算品牌,2017年成立,从业4年之久,目前主要从事出售香港VPS、香港独立服务器、香港站群服务器等,在售VPS线路有三网CN2、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。目前,易探云推出免备案香港物理机服务器性价比很高,E3-1230 8 核*1/16G DDR3/SATA 1TB/香港BGP线路/20Mbps/不限流量,仅...

LOCVPS全场8折,香港云地/邦联VPS带宽升级不加价

LOCVPS发布了7月份促销信息,全场VPS主机8折优惠码,续费同价,同时香港云地/邦联机房带宽免费升级不加价,原来3M升级至6M,2GB内存套餐优惠后每月44元起。这是成立较久的一家国人VPS服务商,提供美国洛杉矶(MC/C3)、和中国香港(邦联、沙田电信、大埔)、日本(东京、大阪)、新加坡、德国和荷兰等机房VPS主机,基于XEN或者KVM虚拟架构,均选择国内访问线路不错的机房,适合建站和远程办...

Hosteons - 限时洛杉矶/达拉斯/纽约 免费升级至10G带宽 低至年$21

Hosteons,一家海外主机商成立于2018年,在之前还没有介绍和接触这个主机商,今天是有在LEB上看到有官方发送的活动主要是针对LEB的用户提供的洛杉矶、达拉斯和纽约三个机房的方案,最低年付21美元,其特点主要在于可以从1G带宽升级至10G,而且是免费的,是不是很吸引人?本来这次活动是仅仅在LEB留言提交账单ID才可以,这个感觉有点麻烦。不过看到老龚同学有拿到识别优惠码,于是就一并来分享给有需...

小米开放为你推荐
本公司苹果5路由route设备itunes支持ipadCTios更新iphonenetbios端口如何组织netbios端口的外部通信重庆宽带测速重庆市电信网速测试是哪个网站或ip勒索病毒win7补丁怎么删除 防勒索病毒 打的补丁重庆电信网速测试如何测量网速
a2hosting winscp 韩国空间 国外空间 网页背景图片 windows2003iso eq2 论坛空间 英文站群 韩国网名大全 777te 电子邮件服务器 web服务器是什么 西安主机 广州虚拟主机 万网空间 摩尔庄园注册 登陆qq空间 稳定空间 国外免费云空间 更多