认证小米开放文件存储

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

语法:

AlphaVPS(€3.99/月)VPS年付15欧,AMD EYPC+NVMe系列起

AlphaVPS是一家保加利亚本土主机商(DA International Group Ltd),提供VPS主机及独立服务器租用等,数据中心包括美国(洛杉矶/纽约)、德国、英国和保加利亚等,公司办公地点跟他们提供的保加利亚数据中心在一栋楼内,自有硬件,提供IPv4+IPv6,支持PayPal或者信用卡等方式付款。商家提供的大硬盘VPS主机,提供128GB-2TB磁盘,最低年付15欧元起,也可以选择...

imidc:$88/月,e3-1230/16G内存/512gSSD/30M直连带宽/13个IPv4日本多IP

imidc对日本独立服务器在搞特别促销,原价159美元的机器现在只需要88美元,而且给13个独立IPv4,30Mbps直连带宽,不限制流量。注意,本次促销只有一个链接,有2个不同的优惠码,你用不同的优惠码就对应着不同的配置,价格也不一样。88美元的机器,下单后默认不管就给512G SSD,要指定用HDD那就发工单,如果需要多加一个/28(13个)IPv4,每个月32美元...官方网站:https:...

sharktech:老牌高防服务器商,跳楼价,1G独享$70、10G共享$240、10G独享$800

不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服务器。根据不同的机房,价格也是不一样的。大带宽、不限流量比较适合建站、数据备份、做下载、做流媒体、做CDN等多种业务。 官方网站:https://www.sharktech.net 付款方式:比特币、信用卡、PayPal、支付宝、西联汇款 以最贵的洛杉矶机器为例,配置表如...

小米开放为你推荐
圆周刊社区责任编辑:计算机网络实验系统computationgraph支持ipad城乡居民社会养老保险人脸识别生存认证xp如何关闭445端口系统怎么关闭445端口ipad连不上wifiiPad 连不上Wifi,显示无互联网连接windows键是哪个Windows键是哪个键啊?勒索病毒win7补丁由于电脑没连接网络,所以成功躲过了勒索病毒,但最近要联网,要提前装什么补丁吗?我电脑断网好久了iphone连不上wifi苹果手机为什么突然连不上家里的wifi?
国外主机空间 阿里云os enzu edis godaddy域名转出 52测评网 dux linux空间 架设服务器 bgp双线 1g空间 php空间购买 多线空间 google台湾 linode支付宝 湖南idc 宿迁服务器 hostease 谷歌搜索打不开 japanese50m咸熟 更多