예제 #1
0
        public HttpWebRequest CloneRequest(string redirectHost)
        {
            ExTraceGlobals.AuthenticationTracer.TraceDebug <Uri, string>(0L, "ProxyRequestData::CloneRequest. Entry. originalRequest = {0}, redirectHost = {1}.", this.originalUri, redirectHost);
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(new UriBuilder(this.originalUri)
            {
                Host = redirectHost
            }.Uri);

            httpWebRequest.Method = this.httpMethod;
            httpWebRequest.Headers["Authorization"] = this.authorization;
            httpWebRequest.ContentType       = this.contentType;
            httpWebRequest.UserAgent         = this.userAgent;
            httpWebRequest.Timeout           = ProxyRequestData.proxyRequestTimeOutInMilliSeconds;
            httpWebRequest.Proxy             = null;
            httpWebRequest.AllowAutoRedirect = false;
            foreach (object obj in this.headers)
            {
                string text = (string)obj;
                if (text.StartsWith("X-MS-", StringComparison.OrdinalIgnoreCase))
                {
                    httpWebRequest.Headers[text] = this.headers[text];
                    RequestDetailsLoggerBase <RequestDetailsLogger> .Current.AppendGenericInfo(text, this.headers[text]);
                }
            }
            if (!string.IsNullOrEmpty(this.forwardForValue))
            {
                httpWebRequest.Headers[WellKnownHeader.XForwardedFor] = this.forwardForValue;
                RequestDetailsLoggerBase <RequestDetailsLogger> .Current.AppendGenericInfo(WellKnownHeader.XForwardedFor, this.forwardForValue);
            }
            if (FaultInjection.TraceTest <bool>((FaultInjection.LIDs) 2804297021U))
            {
                this.AppendProxyHeader(httpWebRequest, redirectHost);
            }
            this.AppendProxyHeader(httpWebRequest, redirectHost);
            using (Stream requestStream = httpWebRequest.GetRequestStream())
            {
                using (BinaryWriter binaryWriter = new BinaryWriter(requestStream))
                {
                    binaryWriter.Write(this.requestBody);
                    binaryWriter.Flush();
                }
                ExTraceGlobals.AuthenticationTracer.TraceDebug <int>(0L, "ProxyRequestData::CloneRequest. Exit. RequestBody = {0}.", this.requestBody.Length);
            }
            return(httpWebRequest);
        }
예제 #2
0
 // Token: 0x06000094 RID: 148 RVA: 0x00004A48 File Offset: 0x00002C48
 internal static bool CheckClientCertificate(HttpRequest request)
 {
     return(FaultInjection.TraceTest <bool>((FaultInjection.LIDs) 4213583165U) || (request != null && request.ClientCertificate != null && request.ClientCertificate.IsValid && string.Compare(request.ServerVariables["AUTH_TYPE"], "SSL/PCT", StringComparison.OrdinalIgnoreCase) == 0));
 }