使用STS产生的临时令牌进行文件上传的两种方式

1 篇文章 0 订阅

方式一:使用STS产生的临时令牌后直接上传

1.1.STS产生id和key以及安全令牌
2.使用步骤一数据  直接实例化然后上传文件  成功上传并且在STS设置的访问限制有效

代码示例:

public HttpResponseMessage TestSTS()
        {
            try
            {
                //构建一个阿里云client,用于发起请求
                //构建阿里云client时需要设置AccessKey ID和AccessKey Secret
                DefaultProfile.GetProfile().AddEndpoint(REGIONID, REGIONID, "Sts", ENDPOINT);
                IClientProfile profile = DefaultProfile.GetProfile(REGIONID, accessKeyId, accessKeySecret);

                DefaultAcsClient client = new DefaultAcsClient(profile);
                //构建AssumeRole请求
                AssumeRoleRequest request = new AssumeRoleRequest();
                request.AcceptFormat = FormatType.JSON;
                //指定角色ARN
                request.RoleArn = "acs:ram::xxx";
                request.RoleSessionName = "xxx";//随意取值  长度为2~32个字符,可包含英文字母、数字、点号(.)、at(@)、                   短横线(-)和下划线(_)。
                //设置Token有效期,可选参数,默认3600秒
                request.DurationSeconds = 3600;
                //设置Token的附加权限策略;在获取Token时,通过额外设置一个权限策略进一步减小Token的权限
                request.Policy = "xxx";
                try
                {
                    AssumeRoleResponse response = client.GetAcsResponse(request);
                    return Request.CreateResponse(
                        new {
                        AccessKeyId = response.Credentials.AccessKeyId,
                        AccessKeySecret = response.Credentials.AccessKeySecret,
                        SecurityToken = response.Credentials.SecurityToken
                        });
                }
                catch (Exception ex)
                {
                    return Request.CreateResponse(new { ErrMes = ex.ToString() });
                }
            }
            catch (Exception)
            {

                throw;
            }
        }

文件上传:

      OssClient client = new OssClient(endpoint, mId, mKey, securityToken);
          // 上传文件。
          client.PutObject( bucketName,"上传的文件路径", "file");
               

方式二:结合URL进行文件上传

1.STS产生id和key以及安全令牌
2.URL临时授权(使用的是自己的id和key)
3.使用步骤一进行实例化ossclient 然后根据Url上传  成功  但是STS设置的限制不起作用 目,使用的是url中指定的的bucket和文件夹
产生URL:

                var objectName = "上传文件路径";
                // 创建OSSClient实例。
                var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
                try
                {
                    // 生成上传签名URL。
                    var generatePresignedUriRequest = new GeneratePresignedUriRequest(bucketName, objectName,                     SignHttpMethod.Put)
                    {
                        Expiration = DateTime.Now.AddMinutes(30),
                    };
                    var signedUrl = client.GeneratePresignedUri(generatePresignedUriRequest);

文件上传:

 OssClient client = new OssClient(endpoint, "STS产生的临时ID", "STS产生的临时key", "STS产生的临时令牌");
                var objectContent = “file”;
                // 使用签名URL上传文件。
                var buffer = Encoding.UTF8.GetBytes(objectContent);
                using (var ms = new MemoryStream(buffer))
                {
                    client.PutObject(new Uri(signedUrl), ms);
                }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值