Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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());
            }
        }