public void TestSignerScope(IClientConfig config, string expectedAuthRegion, string expectedAuthService, string expectedEndpoint) { var signer = new AWS4Signer(); var mock = new Moq.Mock <IRequest>().SetupAllProperties(); var request = mock.Object; mock.SetupGet(x => x.Headers).Returns(new Dictionary <string, string>()); request.Endpoint = EndpointResolver.DetermineEndpoint(config, request); var result = signer.SignRequest(request, config, null, "accessKey", "secretKey"); var scopePieces = result.Scope.Split('/'); // expected to be date/region/service/aws4_request Assert.AreEqual(expectedAuthRegion, scopePieces[1]); Assert.AreEqual(expectedAuthService, scopePieces[2]); Assert.AreEqual(expectedEndpoint, request.Endpoint.Host); }
public override void Sign(IRequest request, IClientConfig clientConfig, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey) { AWS4Signer val = this.SelectSigner(this, _useSigV4, request, clientConfig) as AWS4Signer; if (val != null) { AmazonS3Uri amazonS3Uri; RegionEndpoint alternateEndpoint = default(RegionEndpoint); if (AmazonS3Uri.TryParseAmazonS3Uri(request.get_Endpoint(), out amazonS3Uri) && amazonS3Uri.Bucket != null && BucketRegionDetector.BucketRegionCache.TryGetValue(amazonS3Uri.Bucket, ref alternateEndpoint)) { request.set_AlternateEndpoint(alternateEndpoint); } AWS4SigningResult val2 = val.SignRequest(request, clientConfig, metrics, awsAccessKeyId, awsSecretAccessKey); request.get_Headers()["Authorization"] = val2.get_ForAuthorizationHeader(); if (request.get_UseChunkEncoding()) { request.set_AWS4SignerResult(val2); } } else { SignRequest(request, metrics, awsAccessKeyId, awsSecretAccessKey); } }