Как сгенерировать подпись AWS из JMeter? - PullRequest
0 голосов
/ 05 февраля 2019

Вот мой код в препроцессоре JSR223.

import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
import java.security.InvalidKeyException
import java.security.MessageDigest
import groovy.json.JsonSlurper
import java.text.SimpleDateFormat

static byte[] HmacSHA256(String data, byte[] key) throws Exception {
String algorithm="HmacSHA256";
Mac mac = Mac.getInstance(algorithm);
mac.init(new SecretKeySpec(key, algorithm));
return mac.doFinal(data.getBytes("UTF8"));

}

static byte[] getSignatureKey(String key, String dateStamp, String regionName, String serviceName) throws Exception {
byte[] kSecret = ("AWS4" + key).getBytes("UTF8");
byte[] kDate = HmacSHA256(dateStamp, kSecret);
byte[] kRegion = HmacSHA256(regionName, kDate);
byte[] kService = HmacSHA256(serviceName, kRegion);
byte[] kSigning = HmacSHA256("aws4_request", kService);       
return kSigning;    

}

Пример значений параметров для функции getSignatureKey (это япередача в раздел «Параметры» препроцессора JSR223 в качестве переменных)

key = eC6hEyRSTXMzsG6+juOObz8LbXb36iEYW7PPN1MJ
dateStamp = 20190123T083434Z
regionName = us-west-2
serviceName = test-mlp-us-west-2-4023179c-7708-4c5e-a831-28259b8a8872.s3.us-west-2.amazonaws.com

Этот код не работает и не генерирует подпись AWS.

Вот пример значения подписи, которое мне нужно получить

Signature=2a6092ec4ff49dc9j3b92d436635a57f312753kcc9f553ce1718b9b1594c4362

1.Что не так с этим кодом?2.Как я могу назначить подпись AWS переменной и использовать ее в JMeter?

1 Ответ

0 голосов
/ 06 февраля 2019

Если «Этот код не работает», первое, что вы должны сделать, это посмотреть в jmeter.log файл - в случае сбоя скрипта Groovy он будет содержать информацию о том, чтоточно не удалось и почему и некоторые подсказки исправить.

Я также думаю, что вы должны генерировать подпись, основываясь на деталях запроса (URL, параметры, заголовки и т. Д.)

StringToSign =
    Algorithm + \n +
    RequestDateTime + \n +
    CredentialScope + \n +
    HashedCanonicalRequest

См. Создание строки для подписи для подписи версии 4

Весь процесс с примерами описан в Как обрабатывать динамический AWS SigV4 в JMeter для тестирования API и план тестирования, который вы можете использовать в качестве справочного материала, доступен в GitHub репо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...