Manipulando o evento de autenticação de ponto de acesso
Windows 8, Windows 8.1 e Windows 10 disparam o evento de autenticação de ponto de acesso quando detecta um portal cativo que dá suporte ao WISPr (Provedor de Serviços de Internet Sem Fio).
Quando o evento ocorre, o aplicativo receptor deve chamar imediatamente a função Windows.Networking.NetworkOperator.HotspotAuthentication.TryGetAuthenticationContext usando o token de evento fornecido como um argumento para o manipulador de eventos. Essa função retorna um objeto que gerencia a tentativa de autenticação de ponto de acesso. Caso a função falhe, o manipulador de eventos deverá sair sem executar nenhuma ação adicional.
As propriedades no objeto permitem que seu aplicativo recupere os seguintes itens:
O SSID da rede sem fio.
Detalhes sobre o adaptador de rede conectado ao hotspot.
A URL que contém a mensagem WISPr.
O conteúdo XML da mensagem WISPr.
A URL de autenticação à qual as credenciais são fornecidas.
Existem outras APIs para recuperar os seguintes itens:
O BSSID da rede sem fio (consulte Namespace Windows.Networking.Connectivity).
Parâmetros DHCP da rede (consulte Win32 e COM para aplicativos UWP).
Usando essas informações e qualquer outra informação que seu aplicativo precise obter do sistema local ou da rede, as credenciais podem ser geradas. O objeto também contém métodos que permitem que o aplicativo continue ou conclua a autenticação de hotspot.
As seções a seguir estão disponíveis neste tópico:
Emitir credenciais
No caso mais simples, o aplicativo gera credenciais com base nas informações que tem ou pode recuperar. Por exemplo, um nome de usuário e uma senha são gerados usando informações no conteúdo wispr e informações sobre o adaptador de rede.
Depois de executar as ações necessárias para gerar ou obter credenciais, o aplicativo chama o método IssueCredentials no objeto HotspotAuthenticationContext . Esse método permite que o aplicativo forneça o seguinte:
O parâmetro UserName do WISPr
O parâmetro WISPr Password
Parâmetros arbitrários não padrão a serem incluídos na resposta WISPr
Comportamento em caso de falha
Se o servidor rejeitar as credenciais fornecidas pelo aplicativo, o Windows se desconectará da rede e não tentará novamente uma conexão na sessão de usuário atual. O sinalizador final permite que o aplicativo indique que, se as credenciais não forem bem-sucedidas, o Windows nunca deverá repetir automaticamente uma conexão usando esse perfil.
Há duas variações dessa API. O método IssueCredentials passa os parâmetros para o Windows e retorna instantaneamente. Essa API não fornece o resultado da tentativa de autenticação. O método IssueCredentialsAsync, introduzido em Windows 8.1, é uma versão assíncrona que permite que os aplicativos recuperem o resultado da tentativa de autenticação.
Anular autenticação
Se o aplicativo descobrir que não pode gerar credenciais para a rede atual (porque os contratos de roaming foram alterados, as informações não estão disponíveis ou por outro motivo), ele deve chamar o método AbortAuthentication no objeto HotspotAuthenticationContext .
O Windows se desconecta da rede e não reattempt uma conexão na sessão de usuário atual. Essa função aceita um sinalizador que indica que o Windows nunca deve repetir automaticamente uma conexão usando esse perfil.
Nota Esse método não remove o perfil do sistema e o aplicativo pode ser solicitado a solicitar credenciais novamente se o usuário tentar se conectar manualmente à rede. Se o perfil for completamente removido, o aplicativo deverá fornecer um novo arquivo de provisionamento que remova o perfil associado.
Usar métodos de autenticação alternativos
Se o aplicativo puder se autenticar usando um método diferente de WISPr, ele poderá fazer isso. Depois de autenticar com êxito na rede usando um método alternativo, ele deve concluir a conexão chamando o método SkipAuthentication no objeto HotspotAuthenticationContext . Quando esse método é chamado, o Windows detecta novamente a conectividade com a Internet, ajudando assim a interface do usuário a refletir corretamente o estado autenticado.
Nota O evento HotspotAuthentication não é invocado para hotspots que não anunciam suporte para o protocolo WISPr. No entanto, isso permite que um aplicativo escolha um protocolo diferente a ser usado em resposta ou use uma versão personalizada do WISPr, se necessário.
Interagir com o usuário
Se a interação do usuário for necessária antes que a autenticação possa continuar, o aplicativo deverá chamar o método TriggerAttentionRequired no objeto HotspotAuthenticationContext . Esse método é útil nas seguintes circunstâncias:
O usuário optou por não armazenar credenciais no aplicativo e deve entrar.
Concluir a conexão cobrará o crédito do usuário cartão ou outra conta; portanto, o consentimento é necessário antes de continuar.
Nenhum crédito está disponível na conta do usuário e uma nova compra é necessária.
Esse método não conclui a autenticação. Quando esse método é invocado, o aplicativo solicita que seja aberto em primeiro plano usando os argumentos especificados. O token de evento deve ser passado para o aplicativo em primeiro plano para que ele possa recuperar o objeto HotspotAuthenticationContext novamente e concluir a autenticação usando um dos outros três métodos.
Não há garantia de que a solicitação do aplicativo para abrir em primeiro plano seja bem-sucedida. O evento HotspotAuthentication pode ocorrer devido a uma conexão automática enquanto o computador está em Espera Conectada. O aplicativo é iniciado somente quando o computador não está mais em Espera Conectada, foi desbloqueado e ainda está conectado à rede sem fio. Como isso atrasa o acesso à Internet até que o usuário desbloqueie o computador, esse estado deve ser evitado sempre que as credenciais puderem ser geradas automaticamente.