<restsharp> Как сделать запрос к AWS с помощью RestSharp в MVC? - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь отправить запрос в AWS с помощью RestSharp.Я пытаюсь через приложение MVC.Но запрос не генерируется.Мне нужно было сгенерировать подпись AWS, которая тоже не работает.

Сообщение об ошибке показывает: «Рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте секретный ключ доступа AWS и подписьmethod. "

Я хочу получить токен подключения после успешной авторизации.

Также есть ошибка" Подпись еще не актуальна: еще позже, чем aws "

            using RestSharp;
            public ActionResult GetResponse()
            {
                var client = new RestClient("https://example.com");
                RestRequest request = new RestRequest() { Method = Method.POST };
                request.AddHeader("Content-Type", "application/json");

                string httpDate = GetRouteDate();
                request.AddHeader("x-amz-date", httpDate);
                string authenticationSig =
                GetAWSR_AuthorizationValue("XXXXXX", "YYYYYYYYYYYY", httpDate);
                request.AddHeader("Authorization", authenticationSig); 


                var response = client.Execute(request);
                var content = response.Content;

                return view();

            }

            public static string GetRouteDate()
            {
                DateTime dt = DateTime.Now;

                // For "Signature not yet current: is still later than aws" error
                dt = dt.AddMinutes(-330);

                return dt.ToString("yyyy-MM-ddTHH:mm:ssZ");
            } 

            public static string GetAWSR_AuthorizationValue(string AWSAccessKeyId,
                    string AWSSecretAccessKey, string AmzDate)
            {
                System.Security.Cryptography.HMACSHA1 MySigner =
                    new System.Security.Cryptography.HMACSHA1(
                    System.Text.Encoding.UTF8.GetBytes(AWSSecretAccessKey));

                string SignatureValue = Convert.ToBase64String(
                    MySigner.ComputeHash(System.Text.Encoding.UTF8.GetBytes(AmzDate)));

                DateTime dt = DateTime.Parse(AmzDate);


                string AuthorizationValue = "AWS4-HMAC-SHA256 Credential=" +
                    System.Uri.EscapeDataString(AWSAccessKeyId) + "/" + dt.ToString("yyyyMMdd") + 
                    "/awsregion/execute-api/aws4_request" +
                    ",SignedHeaders=content-type;host;x-amz-date;x-api-key,Signature=" + SignatureValue;

                return AuthorizationValue;
            }
...