Como proteger conexões e autenticar solicitações (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Este tópico descreve os principais métodos usados pelo Tempo de Execução do Windows para permitir que aplicativos do Tempo de Execução do Windows protejam conexões e forneçam as credenciais de autenticação necessárias para estabelecer e usar conexões de rede seguras.

Tecnologias

Criando conexões de rede seguras

SSL e o mais recente TLS são protocolos criptográficos desenvolvidos para fornecer autenticação e criptografia para comunicações por rede. Esses protocolos foram desenvolvidos para impedir a interceptação e a manipulação de dados enviados ou recebidos pela rede. Esses protocolos usam um modelo cliente-servidor para as trocas de protocolos. Esses protocolos também usam certificados digitais e autoridades de certificação para verificar se o servidor é quem diz ser. O protocolo TLS está documentado na RFC 5246 da IETF. O protocolo SSL, mais antigo, foi documentado pela Netscape Communications. O SSL costuma ser usado para fazer referência a esses dois protocolos.

Um objeto StreamSocket pode ser configurado para usar SSL/TLS com comunicações entre o cliente e o servidor. Esse suporte a SSL/TLS é limitado ao uso do objeto StreamSocket como o cliente na negociação SSL/TLS. Atualmente, o SSL/TLS não pode ser usado pelo StreamSocketListener com o StreamSocket criado quando uma conexão é recebida para habilitar SSL/TLS no StreamSocket criado, já que a negociação SSL/TLS como servidor não foi implementada para um StreamSocket.

Para obter exemplos de como criar ou atualizar uma conexões de soquete segura para um serviço de rede, veja Como proteger conexões de soquete com TLS/SSL.

Criando conexões WebSocket protegidas

Como as conexões de soquete tradicionais, as conexões WebSocket também podem ser criptografadas com protocolo TLS/SSL ao usar os recursos StreamWebSocket e MessageWebSocket no Windows 8 para um aplicativo da Windows Store. Na maioria dos casos, você preferirá usar uma conexão WebSocket segura. Isso aumentará as chances de sucesso da sua conexão, já que muitos proxies rejeitam conexões WebSocket não criptografadas.

Para obter exemplos sobre como criar ou atualizar uma conexão de soquete segura para um serviço de rede, veja Como proteger conexões WebSocket com TLS/SSL.

Além da criptografia TLS/SSL, um servidor pode exigir um valor de cabeçalho Sec-WebSocket-Protocol para completar o handshake inicial. Esse valor, representado pelas propriedades StreamWebSocketInformation.Protocol e MessageWebSocketInformation.Protocol, indica a versão do protocolo da conexão e permite que o servidor interprete corretamente o handshake de abertura e os dados trocados depois. Usar essas informações de protocolo, se a qualquer momento o servidor não conseguir interpretar os dados de chegada de maneira segura, a conexão será fechada.

Se a solicitação inicial do cliente não contém esse valor ou fornece um valor que não corresponde ao que o servidor espera, então o valor esperado é enviado do servidor par ao cliente no erro de handshake WebSocket.

Fornecendo a autenticação de credenciais para um servidor Web

As APIs de rede do Tempo de Execução do Windows que permitem aos aplicativos do Tempo de Execução do Windows interagirem com serviços Web seguros fornecem seus próprios métodos para inicializar um cliente ou definir um cabeçalho de solicitação com credenciais de autenticação de servidor e proxy. Cada método é definido com um objeto PasswordCredential que indica um nome de usuário, uma senha e um recurso para os quais as credenciais são usadas. A tabela a seguir fornece um mapeamento dessas APIs:

WebSockets

Background Transfer

Syndication

AtomPub

 

Tópicos relacionados

Como proteger conexões de soquete com TLS/SSL

Como proteger conexões WebSocket com TLS/SSL

Conectando-se a serviços de rede