本文介绍如何授权第三方直接上传文件到OSS而不通过服务器端转发。

适用场景

在典型的C/S系统架构中,服务器端负责接收并处理客户端的请求。那么考虑一个使用OSS作为后端的存储服务,客户端将要上传的文件发送给服务器端,然后服务器端再将数据转发上传到OSS。在这个过程中,一份数据需要在网络上传输两次,一次从客户端到服务器端,一次从服务器端到OSS。当访问量很大的时候,服务器端需要有足够的带宽资源来满足多个客户端的同时上传的需求,这对架构的伸缩性提出了挑战。

为了解决这种场景带来的挑战,OSS提供了授权给第三方上传的功能。使用这个功能,每个客户端可以直接将文件上传到OSS而不是通过服务器端转发,节省了自建服务器的成本,并且充分利用了OSS的海量数据处理能力,无需考虑带宽和并发限制等,可以让客户专心于业务处理。

目前授权上传有两种实现方式:URL签名和临时访问凭证。

URL签名

URL签名即在请求的URL中带OSS AccessKeyId和Signature字段,这样用户就可以直接使用该URL来进行上传。每个URL签名中携带有过期时间以保证安全。

临时访问凭证

临时访问凭证是通过阿里云Security Token Service(STS)来实现授权的一种方式。阿里云 STS 是为云计算用户提供临时访问令牌的Web服务。通过 STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。