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

方式一:使用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);
                }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章