开发者社区 问答 正文

Android-SDK之如何实现授权访问?

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>");

展开
收起
青衫无名 2017-10-18 13:48:05 2384 分享 版权
阿里云 AI 助理回答

您提到的是阿里云对象存储OSS(Object Storage Service)中关于生成临时访问URL的两个功能,这些功能允许您安全地分享存储在OSS中的资源,尤其是当您需要对访问进行控制或限制时。下面是对这两个功能的详细解释:

签名私有资源的指定有效时长的访问URL

当您的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);

签名公开的访问URL

如果您的Bucket或Object已经是公共可读的,那么生成URL用于分享就更为简单了。您不需要生成带签名的URL,直接使用presignPublicObjectURL方法就可以获得一个永久有效的、可以直接公开访问的URL。这意味着任何人都可以通过这个URL随时访问该资源,直到您改变Bucket或Object的权限设置。

示例代码:

// 同样假设oss是已经初始化好的OSSClient实例,bucketName是Bucket名称,objectKey是要访问的对象的键
String url = oss.presignPublicObjectURL(bucketName, objectKey);

请注意,虽然第二个方法生成的URL理论上是“永久”的,但实际的有效性还是取决于您的Bucket或Object权限设置是否保持不变。如果您之后修改了权限,使得对象变为私有,则之前生成的公开URL将不再有效。此外,出于安全和管理考虑,建议定期审查并更新您的访问策略。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答