使用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);
                }

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