认证小米开放文件存储

小米开放  时间: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

语法:

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

丽萨主机122元/每季,原生IP,CN2 GIA网络

萨主机(lisahost)新上了美国cn2 gia国际精品网络 – 精品线路,支持解锁美区Netflix所有资源,HULU, DISNEY, StartZ, HBO MAX,ESPN, Amazon Prime Video等,同时支持Tiktok。套餐原价基础上加价20元可更换23段美国原生ip。支持Tiktok。成功下单后,在线充值相应差价,提交工单更换美国原生IP。!!!注意是加价20换原生I...

Vultr新用户省钱福利,最新可用优惠码/优惠券更新

如今我们无论线上还是线下选择商品的时候是不是习惯问问是不是有优惠活动,如果有的话会加速购买欲望。同样的,如果我们有准备选择Vultr商家云服务器的时候,也会问问是不是有Vultr优惠码或者优惠券这类。确实,目前Vultr商家有一些时候会有针对新注册用户赠送一定的优惠券活动。那就定期抽点时间在这篇文章中专门整理最新可用Vultr优惠码和商家促销活动。不过需要令我们老用户失望的,至少近五年我们看到Vu...

小米开放为你推荐
工艺美术品设计专业请各矿将表填好后于2017年3月1日前发至zhxsh411@163.com邮箱.思科flash支持ipad请仔细阅读在本报告尾部的重要法律声明勒索病毒win7补丁由于电脑没连接网络,所以成功躲过了勒索病毒,但最近要联网,要提前装什么补丁吗?我电脑断网好久了iphone连不上wifi苹果手机为什么突然连不上家里的wifi?itunes备份itunes就是备份不了怎么办啊tcpip上的netbios网络连接详细信息上的netbios over tcpip是什么意思?重庆电信宽带测速重庆电信光纤宽带网络,内外网络和电脑等设备都没发生变化的情况下,办理了从20M提速到100M业务。
美国虚拟空间 工信部域名备案系统 亚洲大于500m 漂亮qq空间 搬瓦工官网 网站被封 股票老左 免费吧 网站加速软件 windowsserver2012r2 bwg 冰盾ddos防火墙 大容量存储控制器驱动 web服务器下载 邮件服务器是什么 tftp服务器是什么 运维堡垒主机 彩虹云点播官网 彩虹云点播点点版 摇号申请网站 更多