当您希望将私有Bucket内部的Object授权给第三方下载的时候,不应该直接将AccessKey提供给下载者,而应该使用以下两种方法。
URL签名
OSS提供了签名下载的方法。您可以在URL中加入签名信息,把该URL转给第三方实现授权访问。第三方用户只需要使用HTTP的GET请求访问此URL即可下载Object。
- 实现方式
URL中包含签名示例如下:
http://<bucket>.<region>.aliyuncs.com/<object>?OSSAccessKeyId=<user access_key_id>&Expires=<unix time>&Signature=<signature_string>
在URL中实现签名,必须至少包含Signature、Expires、OSSAccessKeyId三个参数。
- OSSAccessKeyId:您的AccessKeyId。
- Expires:您期望URL过期的时间。
- Signature:您签名的字符串,具体请参见在URL中包含签名。
说明 此链接需要进行URL编码。
- 功能使用参考
- API:Get Object
- Java SDK:使用URL签名授权访问
- 控制台:获取文件访问地址
说明 在控制台中只有当Bucket处于私有读写权限的时候,获取的访问地址才是URL中签名的形式。否则为不带签名的URL形式。
临时访问凭证
OSS通过STS(Security Token Service)提供了临时凭证给第三方用户,第三方用户以在请求头部中带签名的方式去访问Object。这种授权方式适合移动场景的下载。临时访问凭证实现请参见STS Java SDK。
- 实现方式
第三方用户向app服务器请求,获取了STS颁发的AccessKeyId、AccessKeySecret以及STS Token。第三方用户以STS AccessKeyId、AccessKeySecret以及STS Token去请求开发者的Object资源。
- 功能使用参考
- API:临时访问凭证
- Java SDK:使用STS服务临时授权
- 控制台:获取文件访问地址