开发者社区> 问答> 正文

对象存储 OSS使用STS服务临时授权

已解决

展开
收起
2018-01-17 06:30:43 1281 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    OSS可以通过阿里云STS服务,临时进行授权访问。使用STS时请按以下步骤进行:

    1. 在官网控制台创建子账号,参考OSS STS
    2. 在官网控制台创建STS角色并赋予子账号扮演角色的权限,参考OSS STS
    3. 使用子账号的AccessKeyId/AccessKeySecret向STS申请临时token
    4. 使用临时token中的认证信息创建OSS的Client
    5. 使用OSS的Client访问OSS服务

    使用STS凭证构造签名请求

    用户的client端拿到STS临时凭证后,通过其中安全令牌(SecurityToken)以及临时访问密钥(AccessKeyId, AccessKeySecret)生成oss_request_options。以上传文件为例:

    1. aos_pool_t *p;
    2. oss_request_options_t *options;
    3. aos_status_t *s;
    4. aos_table_t *headers;
    5. aos_table_t *resp_headers;
    6. char *bucket_name = "<您的bucket名字>";
    7. char *object_name = "<您的object名字>";
    8. aos_string_t bucket;
    9. aos_string_t object;
    10. char *data = "<object content>";
    11. aos_list_t buffer;
    12. aos_buf_t *content;
    13. aos_pool_create(&p, NULL);
    14. // init_oss_request_options using sts_token
    15. /* 创建并用STS token初始化options */
    16. options = oss_request_options_create(p);
    17. options->config = oss_config_create(options->pool);
    18. aos_str_set(&options->config->endpoint, "<您的Endpoint>");
    19. aos_str_set(&options->config->access_key_id, "<您的临时AccessKeyId>");
    20. aos_str_set(&options->config->access_key_secret, "<您的临时AccessKeySecret>");
    21. aos_str_set(&options->config->sts_token, "<您的sts_token>");
    22. options->config->is_cname = 0;
    23. options->ctl = aos_http_controller_create(options->pool, 0);
    24. /* 初始化参数 */
    25. aos_str_set(&bucket, bucket_name);
    26. aos_str_set(&object, object_name);
    27. headers = aos_table_make(p, 0);
    28. aos_list_init(&buffer);
    29. content = aos_buf_pack(options->pool, data, strlen(data));
    30. aos_list_add_tail(&content->node, &buffer);
    31. /* 上传文件 */
    32. s = oss_put_object_from_buffer_s(options, &bucket, &object, &buffer, headers, &resp_headers);
    33. if (aos_status_is_ok(s)) {
    34. printf("put object succeeded\n");
    35. } else {
    36. printf("put object failed\n");
    37. }
    38. aos_pool_destroy(p);
    2018-01-23 06:11:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载