原理介绍
使用的方式,可以将应用客户端的数据直传至OBS,或者将存储在OBS里的数据进行 下载。具体流程如图13-1。
OBS支持使用临时安全凭证(临时AK/SK和securitytoken)进行授权访问,同时支持为 临时安全凭证配置权限策略来指定该使用该临时安全凭证时允许执行的操作。什么是 临时安全凭证?
移动应用客户端可以使用指定了权限策略的临时安全凭证来访问OBS,实现数据直 传,整个过程不会暴露用户的永久AK/SK,降低了帐号泄露带来的安全风险。
图13-1 使用临时安全凭证直传 OBS 流程
角色分析如下:
● 应用客户端:即最终用户手机上的APP,负责向应用服务器发出申请临时安全凭 证的请求,以及访问OBS完成数据上传或下载。
● 应用服务器:即提供该Android/iOS应用的开发者开发的APP后台服务,用于用户 管理和授权管理等。
● 对象存储服务:即华为云对象存储服务,负责处理移动应用的数据请求。
● 统一身份认证服务:即华为云统一身份认证服务,负责生成临时安全凭证。
实现流程如下:
1. 应用客户端向应用服务器申请一个临时操作凭证。
2. 应用服务器向统一身份认证服务请求临时安全凭证。
3. 统一身份认证服务向应用服务器返回临时安全凭证。
4. 应用服务器将临时安全凭证发放给应用客户端。
5. 应用客户端使用安全凭证完成OBS数据上传下载。
前提条件
已创建桶,并将桶权限设置为私有读写或者公共读私有写。
详细操作步骤请参见创建桶和配置桶策略。
实践步骤
步骤1 获取OBS SDK开发包和IAM SDK开发包。
OBS SDK请在SDK开发指南中获取。
最佳实践 13 移动应用直传
IAM SDK开发包请在IAM开发工具包获取。
步骤2 模拟应用服务器向IAM请求临时安全凭证和返回安全凭证。
过程如下:
1. 获取用户的IAM用户Token。
API请参见获取IAM用户Token(使用密码),SDK请参见SDK中心。
2. 使用Token获取临时安全凭证(临时AK/SK和securitytoken),获取时需要通过 Policy字段指定该安全凭证允许执行的操作权限。
"id":"MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALMEXXXXX..."
},
步骤3 初始化应用客户端中OBS client。
初始化示例:
● Android
private static final String endPoint = "https://your-endpoint";
private static final String ak = "*** Provide your Access Key ***";
private static final String sk = "*** Provide your Secret Key ***";
private static final String token = "*** Provide your Security Token ***";
private static ObsClient obsClient;
// 创建ObsClient实例
ObsConfiguration config = new ObsConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
obsClient = new ObsClient(ak, sk,token,config);
// 使用访问OBS // 关闭obsClient obsClient.close();
说明
– endPoint即终端节点,可通过地区和终端节点查询。
– ak和sk即临时AK/SK,token即securitytoken,获取方式请参见访问密钥(AK/SK)。
● iOS
NSString *endPoint = @"your-endpoint";
NSString *SK = @"*** Provide your Secret Key ***";
NSString *AK = @"*** Provide your Access Key ***";
// 初始化身份验证
OBSStaticCredentialProvider *credentailProvider = [[OBSStaticCredentialProvider alloc]
initWithAccessKey:AK secretKey:SK];
securityTokencredentailProvider.securityToken = @"*** Provide your Security Token ***";
// 初始化服务配置
OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider];
// 初始化
clientOBSClient *client = [[OBSClient alloc] initWithConfiguration:conf];
说明
– endPoint即终端节点,可通过地区和终端节点查询。
– AK和SK即临时AK/SK,securityToken即securitytoken,获取方式请参见访问密钥
(AK/SK)。
● web js
// 未引入AMD,直接通过构造函数创建ObsClient实例var obsClient = new ObsClient({
access_key_id: '*** Provide your Access Key ***', secret_access_key: '*** Provide your Secret Key ***', security_token: '*** Provide your Security Token ***' server : 'https://your-endpoint'});
// 使用访问OBS
// 引入AMD,通过依赖注入的构造函数创建ObsClient实例var obsClient;
define(['ObsClient'], function(ObsClient){
obsClient = new ObsClient({
– endpoint即终端节点,可通过地区和终端节点查询。
– access_key_id和secret_access_key即临时AK/SK,security_token即securitytoken,获 取方式请参见访问密钥(AK/SK)。
BrowserJS 上传对象 下载对象
.NET 上传对象 下载对象
最佳实践 13 移动应用直传
SDK 语言 上传指导 下载指导
Android 上传对象 下载对象
iOS 上传对象 下载对象
PHP 上传对象 下载对象
Node.js 上传对象 下载对象
----结束