protected override void FinalizeForRedirect(IExecutionContext executionContext, string redirectedLocation) { var request = executionContext.RequestContext.Request; if (request.UseChunkEncoding) { if (request.Headers.ContainsKey(HeaderKeys.XAmzDecodedContentLengthHeader)) { request.Headers[HeaderKeys.ContentLengthHeader] = request.Headers[HeaderKeys.XAmzDecodedContentLengthHeader]; } } if (request.Headers.ContainsKey(HeaderKeys.HostHeader)) { request.Headers.Remove(HeaderKeys.HostHeader); } // FinalizeForRedirect() sets the correct endpoint as per the redirected location. base.FinalizeForRedirect(executionContext, redirectedLocation); // Evaluate if this request requires SigV4. The endpoint set by FinalizeForRedirect() // is one of the inputs to decide if SigV4 is required. AmazonS3KmsHandler.EvaluateIfSigV4Required(executionContext.RequestContext.Request); var redirect = new AmazonS3Uri(redirectedLocation); if (AWSConfigsS3.UseSignatureVersion4 || request.UseSigV4 || redirect.Region.GetEndpointForService("s3").SignatureVersionOverride == "4" || redirect.Region.GetEndpointForService("s3").SignatureVersionOverride == null) { // Resign if sigV4 is enabled, the request explicitly requires SigV4 or if the redirected region mandates sigV4. // resign appropriately for the redirected region, re-instating the user's client // config to original state when done request.AuthenticationRegion = redirect.Region.SystemName; Signer.SignRequest(executionContext.RequestContext); } }
protected override void FinalizeForRedirect(IExecutionContext executionContext, string redirectedLocation) { IRequest request = executionContext.get_RequestContext().get_Request(); if (request.get_UseChunkEncoding() && request.get_Headers().ContainsKey("X-Amz-Decoded-Content-Length")) { request.get_Headers()["Content-Length"] = request.get_Headers()["X-Amz-Decoded-Content-Length"]; } if (request.get_Headers().ContainsKey("host")) { request.get_Headers().Remove("host"); } this.FinalizeForRedirect(executionContext, redirectedLocation); AmazonS3KmsHandler.EvaluateIfSigV4Required(executionContext.get_RequestContext().get_Request()); AmazonS3Uri amazonS3Uri = new AmazonS3Uri(redirectedLocation); if (AWSConfigsS3.UseSignatureVersion4 || request.get_UseSigV4() || amazonS3Uri.Region.GetEndpointForService("s3").get_SignatureVersionOverride() == "4" || amazonS3Uri.Region.GetEndpointForService("s3").get_SignatureVersionOverride() == null) { request.set_AuthenticationRegion(amazonS3Uri.Region.get_SystemName()); Signer.SignRequest(executionContext.get_RequestContext()); } }