本文主要讲解OssDemo这样的移动APP如何使用应用服务器,以达到不需要在APP端存储AccessKeyId和AccessKeySecret也能向OSS上传的目的。
调用逻辑
生成一个EditText控件。 位置:
res/layout/content_main.xml
内容:
<EditText
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="4"
android:id="@+id/sts_server"
android:text="@string/sts_server"
/>
位置:
res/values/strings
内容:
<string name="sts_server">http://oss-demo.aliyuncs.com/app-server/sts.php</string>
OSSFederationToken getFederationToken()
//初始化一个OssService用来上传下载
public OssService initOSS(String endpoint, String bucket, ImageDisplayer displayer) {
//如果希望直接使用accessKey来访问的时候,可以直接使用OSSPlainTextAKSKCredentialProvider来鉴权。
//OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);
//使用自己的获取STSToken的类
OSSCredentialProvider credentialProvider = new STSGetter(stsServer);
ClientConfiguration conf = new ClientConfiguration();
conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒
conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒
conf.setMaxConcurrentRequest(5); // 最大并发请求书,默认5个
conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次
OSS oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider, conf);
return new OssService(oss, bucket, displayer);
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您提到的场景是关于如何在移动APP(如OssDemo)中安全地使用阿里云对象存储服务(OSS)上传文件,而不直接在APP端存储敏感的AccessKeyId和AccessKeySecret。这里采用的是STS(Security Token Service)临时凭证机制来实现这一目标。下面是对您描述流程的一个总结和补充说明:
AccessKeyId
、AccessKeySecret
以及SecurityToken
等临时凭证信息。res/layout/content_main.xml
),定义了一个EditText控件用于展示或输入STS Server的地址。res/values/strings.xml
中,预设了STS Server的默认地址示例。getFederationToken()
,该方法负责向STS Server发起网络请求并解析返回的JSON数据,提取出STS凭证。initOSS()
方法展示了如何使用从STS Server获取的凭证来初始化OSSClient。这里使用了自定义的STSGetter
作为OSSCredentialProvider
,它应该是一个实现了从STS Server获取凭证逻辑的类。ClientConfiguration
以调整连接超时、socket超时、最大并发请求和重试次数等网络配置。确保您的STS Server端实现遵循最小权限原则,并且对请求进行充分的身份验证和授权检查,以保证整个过程的安全性。