Firewall: A entrada é necessária para obter resposta enquanto a regra de saída já está lá?

1

Eu desenvolvi um aplicativo da Web MVC que tem APIs da Web e hospedado no Amazon Instance e um aplicativo do Windows para chamar essas APIs para obter resposta desse servidor.

Ambos os aplicativos da Web e do Windows são desenvolvidos no framework asp.net 4.5 usando a linguagem c #.

O aplicativo do Windows é instalado em more than 200 client's system, que são servidores altamente seguros, com todas as portas de entrada bloqueadas no Firewall.

Estou usando o HttpWebRequest com o BindIPEndPoint para chamar APIs da Web usando o intervalo de portas TCP [default 7777-7786] .

Chamadas API funcionam bem no Aplicativo do Windows, se houver Permitir Regras de Firewall de Entrada e Saída.

Mas o problema é que os clientes não estão me permitindo nenhuma regra do Inbound Firewall, eles somente permitem regras de Firewall de Saída para esses intervalos de portas. E o aplicativo Windows não está funcionando com regras de entrada bloqueadas para esse intervalo de portas.

É necessário abrir a Regra de Entrada no Firewall para esse intervalo de portas para chamar / obter solicitação / resposta para / de APIs? Se não houver necessidade de regra do firewall de entrada, por favor, explique por quê?

Abaixo está a chamada de API que usa uma porta TCP estática no meu aplicativo do Windows :

try
{
    string address = RevWatchURL;
    address = address + "api/GetRevGuardLatestPatch";
    HttpWebRequest httpWebRequest = WebRequest.Create(address) as HttpWebRequest;
    httpWebRequest.ContentType = "text/json";
    httpWebRequest.Method = "POST";
    httpWebRequest.Timeout = 300000;

    httpWebRequest.ServicePoint.BindIPEndPointDelegate = 
                new BindIPEndPoint(CommonValues.BindIPEndPointCallbackRGPatch);

    string enRevGuardUniqueId = 
                Encryption.EncryptionTechnique(Convert.ToString(UniqueId), null, null);

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        string json = "{\"UniqueId\":\"" + enRevGuardUniqueId + "\"}";

        streamWriter.Write(json);
        streamWriter.Flush();
        streamWriter.Close();
    }

    try
    {
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            returnVal = streamReader.ReadToEnd();
            streamReader.Close();
            httpResponse.Close();
        }
    }
    catch (WebException ex)
    {
    }
    finally
    {
        httpWebRequest.Abort();
    }

    Obj = JsonConvert.DeserializeObject<CommonValues.RevGuardPatchClass>(returnVal);
}
catch (Exception ex)
{
    MessageBox.Show("Error", "API", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}

Método do BindIPEndPoint:

public static IPEndPoint BindIPEndPointCallbackRGPatch(ServicePoint servicePoint, 
                                            IPEndPoint remoteEndPoint, int retryCount)
{
    return new IPEndPoint(IPAddress.Any, 7777);
}
    
por Abhishek Parmar 14.10.2016 / 12:24

0 respostas