private void OnPostAuthenticateInternal(HttpApplication httpApplication)
        {
            HttpContext context = httpApplication.Context;

            if (!context.Request.IsAuthenticated)
            {
                bool   flag         = false;
                bool   flag2        = false;
                string value        = string.Empty;
                string httpMethod   = context.Request.HttpMethod;
                string absolutePath = context.Request.Url.AbsolutePath;
                if (httpMethod.Equals("GET", StringComparison.OrdinalIgnoreCase) || httpMethod.Equals("HEAD", StringComparison.OrdinalIgnoreCase))
                {
                    if (HttpProxyGlobals.ProtocolType != ProtocolType.Autodiscover || (!ProtocolHelper.IsOAuthMetadataRequest(absolutePath) && !ProtocolHelper.IsAutodiscoverV2Request(absolutePath)))
                    {
                        flag2 = true;
                        flag  = true;
                        value = "AutodiscoverEwsDiscovery";
                    }
                }
                else if (!ProtocolHelper.IsAnyWsSecurityRequest(context.Request.Url.AbsolutePath) && HttpProxyGlobals.ProtocolType != ProtocolType.Autodiscover)
                {
                    flag2 = true;
                    value = "AnonymousRequestDisallowed";
                }
                if (!string.IsNullOrEmpty(value))
                {
                    context.Items[AnonymousRequestFilterModule.AnonymousRequestFilterModuleLoggingKey] = value;
                }
                if (flag)
                {
                    AutodiscoverEwsDiscoveryResponseHelper.AddEndpointEnabledHeaders(context.Response);
                }
                if (flag2)
                {
                    context.Response.StatusCode        = 401;
                    context.Response.StatusDescription = "Anonymous Request Disallowed";
                    httpApplication.CompleteRequest();
                }
            }
        }
Exemple #2
0
 public static bool IsAnyWsSecurityRequest(this HttpRequest request)
 {
     return(ProtocolHelper.IsAnyWsSecurityRequest(request.Url.LocalPath));
 }