Я пытаюсь отправить запрос в 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;
}