认证小米开放文件存储

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

语法:

日本美国站群服务器raksmart站群新增,限量低至月1.99美元

RAKsmart 商家八月份的促销活动今天更新。基本上和上个月的产品套餐活动差不多的,不过也是有简单的微调。对于RAKsmart商家还是比较了解的,他们家产品虽然这两年增加多个机房,以及在VPS主机方案上有丰富的机房和调整到一些自营机房,他们家的策划能力还是有限,基本上每个月的套餐活动都差不多。RAKsmart 在八月份看到有新增香港高防服务器可选,最高100GB防御。同时原来上个月缺货的日本独立...

特网云57元,香港云主机 1核 1G 10M宽带1G(防御)

特网云官網特网云服务器在硬件级别上实现云主机之间的完全隔离;采用高端服务器进行部署,同时采用集中的管理与监控,确保业务稳定可靠,搭建纯SSD架构的高性能企业级云服务器,同时采用Intel Haswell CPU、高频DDR4内存、高速Sas3 SSD闪存作为底层硬件配置,分钟级响应速度,特网云采用自带硬防节点,部分节点享免费20G防御,可实现300G防御峰值,有效防御DDoS、CC等恶意攻击,保障...

wordpress专业外贸建站主题 WordPress专业外贸企业网站搭建模版

WordPress专业外贸企业网站搭建模版,特色专业外贸企业风格 + 自适应网站开发设计 通用流行的外贸企业网站模块 + 更好的SEO搜索优化和收录 自定义多模块的产品展示功能 + 高效实用的后台自定义模块设置!采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera...

小米开放为你推荐
AssumegraphFDCphp支持ipad支持ipad请务必阅读正文之后的免责条款部分深圳市富满电子集团股份有限公司重庆宽带测速重庆哪一种宽带网速最快127.0.0.1127.0.0.1打不开tcpip上的netbios网络连接详细信息上的netbios over tcpip是什么意思?canvas2动漫cv井口裕香,都有哪些作品?
域名购买 便宜vps 踢楼 directadmin 服务器怎么绑定域名 2017年万圣节 12306抢票助手 警告本网站美国保护 美国十次啦服务器 hostker cdn联盟 泉州电信 服务器干什么用的 免费phpmysql空间 天翼云盘 100mbps 鲁诺 超级服务器 架设邮件服务器 美国凤凰城 更多