Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var datetime = (new Date()).toISOString().replace(/[:\-]|\.\d{3}/g, '');
- var req = buildRequest(pm.environment.get('ESHost'), request.data);
- pm.environment.set('authorization', req.headers.Authorization);
- pm.environment.set('xAmzDate', datetime);
- function buildRequest(endpoint, body) {
- var endpointParts = endpoint.match(/^([^\.]+)\.?([^\.]*)\.?([^\.]*)\.amazonaws\.com$/);
- var region = endpointParts[2];
- var service = endpointParts[3];
- //var datetime = (new Date()).toISOString().replace(/[:\-]|\.\d{3}/g, '');
- var date = datetime.substr(0, 8);
- var kDate = hmac('AWS4' + pm.globals.get('secret_key'), date);
- var kRegion = hmac(kDate, region);
- var kService = hmac(kRegion, service);
- var kSigning = hmac(kService, 'aws4_request');
- var request = {
- host: endpoint,
- method: 'POST',
- path: '/myindex/_doc/_search',
- body: body,
- headers: {
- 'Content-Type': 'application/json',
- 'Host': endpoint,
- 'Content-Length': Buffer.byteLength(body),
- 'X-Amz-Date': datetime
- }
- };
- var canonicalHeaders = Object.keys(request.headers)
- .sort(function(a, b) { return a.toLowerCase() < b.toLowerCase() ? -1 : 1; })
- .map(function(k) { return k.toLowerCase() + ':' + request.headers[k]; })
- .join('\n');
- console.log('canonicalHeaders='+canonicalHeaders);
- var signedHeaders = Object.keys(request.headers)
- .map(function(k) { return k.toLowerCase(); })
- .sort()
- .join(';');
- console.log('signedHeaders='+signedHeaders);
- var canonicalString = [
- request.method,
- request.path, '',
- canonicalHeaders, '',
- signedHeaders,
- hash(request.body),
- ].join('\n');
- console.log('canonicalString='+canonicalString);
- var credentialString = [ date, region, service, 'aws4_request' ].join('/');
- var stringToSign = [
- 'AWS4-HMAC-SHA256',
- datetime,
- credentialString,
- hash(canonicalString)
- ] .join('\n');
- request.headers.Authorization = [
- 'AWS4-HMAC-SHA256 Credential=' + pm.globals.get('access_key') + '/' + credentialString,
- 'SignedHeaders=' + signedHeaders,
- 'Signature=' + hmac(kSigning, stringToSign)
- ].join(', ');
- return request;
- }
- function hmac(key, str) {
- return CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(str, key));
- }
- function hash(str) {
- return CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(str));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement