SDK支持签名出特定有效时长或者公开的URL,用于转给第三方实现授权访问。
签名私有资源的指定有效时长的访问URL
如果Bucket或Object不是公共可读的,那么需要调用以下接口,获得签名后的URL:String url = oss.presignConstrainedObjectURL("<bucketName>", "<objectKey>", 30 * 60);
签名公开的访问URL
如果Bucket或Object是公共可读的,那么调用一下接口,获得可公开访问Object的URL:String url = oss.presignPublicObjectURL("<bucketName>", "<objectKey>");
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您提到的是阿里云对象存储OSS(Object Storage Service)中关于生成临时访问URL的两个功能,这些功能允许您安全地分享存储在OSS中的资源,尤其是当您需要对访问进行控制或限制时。下面是对这两个功能的详细解释:
当您的Bucket或Object设置为私有(即非公共可读)时,直接通过URL是无法访问这些资源的。为了在一定时间内授权第三方访问这些私有资源,您可以使用presignConstrainedObjectURL
方法来生成一个签名的、有限时长的URL。这个URL的有效期由您指定,例如30分钟(30 * 60秒),在此期间内,任何持有该URL的人都可以访问该资源,而无需提供额外的身份验证信息。
示例代码:
// 假设oss是已经初始化好的OSSClient实例,bucketName是Bucket名称,objectKey是要访问的对象的键,expiration是过期时间(单位:秒)
long expiration = 30 * 60; // 设置URL有效期为30分钟
String url = oss.presignConstrainedObjectURL(bucketName, objectKey, expiration);
如果您的Bucket或Object已经是公共可读的,那么生成URL用于分享就更为简单了。您不需要生成带签名的URL,直接使用presignPublicObjectURL
方法就可以获得一个永久有效的、可以直接公开访问的URL。这意味着任何人都可以通过这个URL随时访问该资源,直到您改变Bucket或Object的权限设置。
示例代码:
// 同样假设oss是已经初始化好的OSSClient实例,bucketName是Bucket名称,objectKey是要访问的对象的键
String url = oss.presignPublicObjectURL(bucketName, objectKey);
请注意,虽然第二个方法生成的URL理论上是“永久”的,但实际的有效性还是取决于您的Bucket或Object权限设置是否保持不变。如果您之后修改了权限,使得对象变为私有,则之前生成的公开URL将不再有效。此外,出于安全和管理考虑,建议定期审查并更新您的访问策略。