Pergunta

Um aplicativo que estou trabalhando em interfaces com um aplicativo existente em execução em uma caixa remota. A Communicaitons com o aplicativo remoto é através de seus serviços públicos da Web. Foi -me pedido para criar um aprimoramento que envolverá um cliente usando o serviço da Web para lidar com dados confidenciais que precisarão ser transmitidos com segurança.

Alguém poderia me dar algumas dicas sobre a melhor forma de proceder?

Foi útil?

Solução

Para começar, você deve usar o SSL e rejeitar quaisquer solicitações que não o estejam usando. Isso criptografará os dados à medida que estão sendo transmitidos pela Internet.

Se você estiver usando SOAP, poderá definir um cabeçalho personalizado em seu serviço que pega um nome de usuário / senha. Então, para a primeira linha em cada método público, valide o nome de usuário e a senha em relação a um banco de dados. Se for bem -sucedido, defina o httpcontext.current.user apropriadamente e seu serviço irá amarrar bem com a infraestrutura de ASP.NET incorporada.

ADICIONADO: Abaixo está um amostra de SoaPheader que inclui um nome de usuário / senha para autenticação.

// define the header
public class AuthenticationHeader : SoapHeader
{
    public String UserName { get; set; }
    public String Password { get; set; }
}

// your service
public class PublicWebService : WebService
{
    // defines an instance of the header as part of the service
    public AuthenticationHeader Authentication;

    private void Authenticate()
    {
        // validate the username / password against a database
        // set the HttpContext.Current.User if successful.
        // Maybe throw a SoapException() if authentication fails
    }

    // Notice the SoapHeader("Authentication") attribute...
    // This tells ASP.Net to look for the incoming header for this method...
    [WebMethod]
    [SoapHeader("Authentication")]
    public void PublicMethod1()
    {
        Authenticate();

        // your code goes here
    }

    // Expose another method with the same authentication mechanism
    [WebMethod]
    [SoapHeader("Authentication")]
    public void PublicMethod2()
    {
        Authenticate();

        // your code goes here
    }
}

Agora, se você executar a ferramenta WSDL, a classe Proxy gerada incluirá o cabeçalho de autenticação definido:

PublicWebService s = new PublicWebService();
s.Authentication = new AuthenticationHeader();
s.Authentication.UserName = "xxxxxxxx";
s.Authentication.Password = "yyyyyyyy";
s.PublicMethod1();
s.PublicMethod2();

Outras dicas

Rota DIY:

  1. Leia sobre segurança (comece com "Segredos e mentiras"E outros livros gerais antes de passar para os técnicos)

  2. Realize uma análise de risco e avaliação de threads. Entenda o que você está protegendo e do que e de onde as ameaças virão. É improvável que você precise de "alta segurança"1.

  3. Use TLS (também conhecido como SSL).

  4. No cliente, verifique se o certificado do servidor está correto.

Melhor rota: Empregue um especialista que tenha uma reputação estabelecida para ajudá -lo.


1 A menos que você realmente esteja construindo uma planta de armas nucleares ou similar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top