使用临时url进行授权访问-j9九游会登录
临时授权访问是指通过访问密钥、请求方法类型、请求参数等信息生成一个临时访问权限的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字段或者传入错误的值,此时会出现跨域错误。j9九游会登录的解决方案为: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);
}]
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨