Skip to content

Commit 69da9be

Browse files
authored
Merge pull request #9 from mterrel/fix_header_parameters
Fix 403 Forbidden errors with v4 signatures
2 parents 22344e4 + ec01e3b commit 69da9be

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

index.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
1010
https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html
1111
*/
1212

13-
const amzHeaders = ['Action','Version','X-Amz-Content-Sha256','X-Amz-Date','X-Amz-Algorithm','X-Amz-Credential','X-Amz-Security-Token',
13+
const amzHeaders = ['X-Amz-Content-Sha256','X-Amz-Date','X-Amz-Algorithm','X-Amz-Credential','X-Amz-Security-Token',
1414
'X-Amz-Signature','X-Amz-SignedHeaders'];
1515
const s3Headers = ['x-amz-security-token'];
1616
const v2Params = ['AWSAccessKeyId', 'Action', 'SignatureMethod', 'SignatureVersion', 'Timestamp', 'Version', 'Signature'];
17+
const v4Required = ['Action', 'Version'];
18+
const v4Params = [].concat(v4Required, amzHeaders);
1719

1820
var multiParams = [];
1921

@@ -590,6 +592,15 @@ module.exports = {
590592

591593
// https://docs.aws.amazon.com/IAM/latest/APIReference/CommonParameters.html
592594

595+
for (var p in v4Required) {
596+
var param = {};
597+
param.name = v4Required[p];
598+
param["in"] = 'query';
599+
param.type = 'string';
600+
param.required = true;
601+
s.parameters[v4Required[p]] = param;
602+
}
603+
593604
for (var h in amzHeaders) {
594605
var header = {};
595606
header.name = amzHeaders[h];
@@ -598,8 +609,6 @@ module.exports = {
598609
header.required = false;
599610
s.parameters[amzHeaders[h]] = header;
600611
}
601-
s.parameters.Action.required = true;
602-
s.parameters.Version.required = true;
603612

604613
}
605614
else if (src.metadata.signatureVersion == 's3') {
@@ -835,9 +844,9 @@ module.exports = {
835844
s.paths[url] = path; // path contains action
836845
if (sigV4Headers) {
837846
s.paths[url].parameters = [];
838-
for (var h in amzHeaders) {
847+
for (var h in v4Params) {
839848
var param = {};
840-
param["$ref"] = '#/parameters/'+amzHeaders[h];
849+
param["$ref"] = '#/parameters/'+v4Params[h];
841850
s.paths[url].parameters.push(param);
842851
}
843852
}

0 commit comments

Comments
 (0)