public override void OnAuthorization(AuthorizationContext context) { const string networkIdHeader = "X-NetworkId"; const string networkkeyHeader = "X-NetworkKey"; var fields = HeaderParser.ParseAllOrNothing(context.HttpContext.Request.Headers, networkIdHeader, networkkeyHeader); if (fields != null) { var networkAuthenticator = (INetworkAuthenticator)context.HttpContext.RequestServices.GetService(typeof(INetworkAuthenticator)); var networkId = fields[networkIdHeader]; var networkKey = fields[networkkeyHeader]; if (networkAuthenticator.Authenticate(new AuthenticationParameters(networkId, networkKey))) { new NetworkAuthenticationContext().RegisterContextNetwork(context.HttpContext, networkId); return; } } context.Result = new HttpUnauthorizedResult(); Logger.Warning("Unauthorized. IP: {0}. Request Url: {1}. NetworkId: {2}", context.HttpContext.GetClientIpAddress(), context.HttpContext.Request.Path, fields != null ? fields[networkIdHeader] : "N/A"); }