使用临时url进行授权访问-九游平台
临时授权访问是指通过访问密钥、请求方法类型、请求参数等信息生成一个临时访问权限的url,这个url中会包含鉴权信息,您可以使用该url进行访问obs服务进行特定操作。在生成url时,您需要指定url的有效期。所有继承obsbaserequest的子类都能使用临时鉴权访问。
临时授权访问支持的操作以及相关信息见下表:
操作名 |
obs ios sdk类名 |
---|---|
创建桶 |
obscreatebucketrequest |
获取桶列表 |
obslistbucketsrequest |
删除桶 |
obsdeletebucketrequest |
列举桶内对象 |
obslistobjectsrequest |
列举桶内多版本对象 |
obslistobjectsversionsrequest |
列举分段上传任务 |
obslistmultipartuploadsrequest |
获取桶元数据 |
obsgetbucketmetadatarequest |
获取桶区域位置 |
obsgetbucketmetadatarequest |
获取桶存量信息 |
obsgetbucketstorageinforequest |
设置桶配额 |
obssetbucketquotarequest |
获取桶配额 |
obsgetbucketquotarequest |
设置桶访问权限 |
obssetbucketaclwithcannedaclrequest、obssetbucketaclwithpolicyrequest |
获取桶访问权限 |
obsgetbucketaclrequest |
开启/关闭桶日志 |
obssetbucketloggingrequest |
查看桶日志 |
obsgetbucketloggingrequest |
设置桶策略 |
obssetbucketpolicyrequest、obssetbucketpolicywithstringrequest |
查看桶策略 |
obsgetbucketpolicyrequest |
删除桶策略 |
obsdeletebucketpolicyrequest |
设置生命周期规则 |
obssetbucketlifecyclerequest |
查看生命周期规则 |
obsgetbucketlifecyclerequest |
删除生命周期规则 |
obsdeletebucketlifecyclerequest |
设置托管配置 |
obssetbucketwebsiterequest |
查看托管配置 |
obsgetbucketwebsiterequest |
清除托管配置 |
obsdeletebucketwebsiterequest |
设置桶多版本状态 |
obssetbucketversioningrequest |
查看桶多版本状态 |
obsgetbucketversioningrequest |
设置跨域规则 |
obssetbucketcorsrequest |
查看跨域规则 |
obsgetbucketcorsrequest |
删除跨域规则 |
obsdeletebucketcorsrequest |
options桶 |
obsoptionsbucketrequest |
设置桶标签 |
obssetbuckettaggingrequest |
查看桶标签 |
obsgetbuckettaggingrequest |
删除桶标签 |
obsdeletebuckettaggingrequest |
上传对象 |
obsputobjectwithdatarequest、obsputobjectwithfilerequest |
追上上传 |
obsappendobjectwithfilerequest |
下载对象 |
obsgetobjecttodatarequest |
复制对象 |
obscopyobjectrequest |
删除对象 |
obsdeleteobjectrequest |
批量删除对象 |
obsdeleteobjectsrequest |
获取对象属性 |
obsgetobjectmetadatarequest |
设置对象访问权限 |
obssetobjectaclrequest |
查看对象访问权限 |
obsgetobjectaclrequest |
初始化分段上传任务 |
obsinitiatemultipartuploadrequest |
上传段 |
obsuploadpartwithdatarequest |
复制段 |
obscopypartrequest |
列举已上传的段 |
obslistpartsrequest |
合并段 |
obscompletemultipartuploadrequest |
取消分段上传任务 |
obsabortmultipartuploadrequest |
options对象 |
obsoptionsobjectrequest |
恢复归档存储对象 |
obsrestoreobjectrequest |

如果遇到跨域报错、签名不匹配问题,请参考以下步骤排查问题:
- 未配置跨域,需要在控制台配置cors规则,请参考。
- 签名计算问题,请参考url中携带签名排查签名参数是否正确;比如上传对象功能,后端将content-type参与计算签名生成授权url,但是前端使用授权url时没有设置content-type字段或者传入错误的值,此时会出现跨域错误。九游平台的解决方案为:content-type字段前后端保持一致。
您可以通过createv2presignedurl生成授权访问的临时url。以下代码展示了如何生成常用操作的url:
列举对象
static obsclient *client; nsstring *endpoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量accesskeyid和secretaccesskey。 // 您可以登录访问管理控制台获取访问密钥ak/sk,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("accesskeyid"); char* sk_env = getenv("secretaccesskey"); nsstring *ak = [nsstring stringwithutf8string:ak_env]; nsstring *sk = [nsstring stringwithutf8string:sk_env]; // 初始化身份验证 obsstaticcredentialprovider *credentialprovider = [[obsstaticcredentialprovider alloc] initwithaccesskey:ak secretkey:sk]; //初始化服务配置 obsserviceconfiguration *conf = [[obsserviceconfiguration alloc] initwithurlstring:endpoint credentialprovider:credentialprovider]; // 初始化client client = [[obsclient alloc] initwithconfiguration:conf]; obslistobjectsrequest *request = [[obslistobjectsrequest alloc] initwithbucketname:@"bucketname"]; // v2生成授权访问url [client createv2presignedurl:request expireafter:3600 completionhandler:^(nsstring *urlstring, nsstring *httpverb, nsdictionary *signedheaders) { nslog(@"%@",urlstring); }]
获取对象
static obsclient *client; nsstring *endpoint = @"your-endpoint"; // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量accesskeyid和secretaccesskey。 // 您可以登录访问管理控制台获取访问密钥ak/sk,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html char* ak_env = getenv("accesskeyid"); char* sk_env = getenv("secretaccesskey"); nsstring *ak = [nsstring stringwithutf8string:ak_env]; nsstring *sk = [nsstring stringwithutf8string:sk_env]; // 初始化身份验证 obsstaticcredentialprovider *credentialprovider = [[obsstaticcredentialprovider alloc] initwithaccesskey:ak secretkey:sk]; //初始化服务配置 obsserviceconfiguration *conf = [[obsserviceconfiguration alloc] initwithurlstring:endpoint credentialprovider:credentialprovider]; // 初始化client client = [[obsclient alloc] initwithconfiguration:conf]; obsgetobjecttodatarequest *request = [[obsgetobjecttodatarequest alloc] initwithbucketname:@"bucketname" objectkey:@"objectkey"]; // v2生成授权访问url [client createv2presignedurl:request expireafter:3600 completionhandler:^(nsstring *urlstring, nsstring *httpverb, nsdictionary *signedheaders) { nslog(@"%@",urlstring); }]
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨