Perguntas frequentes sobre o EAPHost Supplicant

Este tópico fornece respostas para perguntas frequentes sobre a API EAPHost Supplicant.

Por que preciso chamar "EapHostPeerInitialize" e "EapHostPeerUninitialize"?

EapHostPeerInitialize e EapHostPeerUninitialize inicializam e não inicializam o ambiente COM usado para comunicação entre processos (IPC) entre um supplicante e eAPHost.

Quais funções devem ser invocadas em threads que têm COM inicializado para STA (Single Threaded Apartment)?

EapHostPeerInvokeConfigUI, EapHostPeerInvokeInteractiveUI e EapHostAuthenticatorInvokeConfigUI devem ser chamados em threads que tenham COM inicializado para STA. Isso pode ser feito chamando a API COM CoInitialize; quando o suplicável tiver terminado com o thread STA , CoUninitialize deverá ser chamado antes de sair.

Como o EAPHost exporta material de chave?

Os métodos EAP EAP do EAP exportam MSKs (Chaves de Sessão Mestras) na forma de chaves MPPE (Criptografia Ponto a Ponto) da Microsoft para os suplicantes. Material de chave adicional, como PMKs (chaves mestras pares) podem ser gerados pelo suplicável usando o MSK. Para que os métodos gerem outras chaves durante a autenticação, os métodos podem fornecer essas chaves como atributos específicos do fornecedor para os supplicantes.

O que é uma EMSK (Chave de Sessão Mestra Estendida)?

O EMSK é um material de chave adicional exportado pelo método EAP. O EMSK tem pelo menos 64 octetos de comprimento. O EMSK é compartilhado entre o cliente e o servidor EAP, mas não é compartilhado com o autenticador ou com qualquer outro terceiro. Atualmente, o EMSK está reservado para uso futuro. Para obter mais informações, consulte Requisitos de método EAP do Protocolo de Autenticação Extensível) para LANs sem fio.

Quando um método consome ou gera um atributo?

Se um método EAP gerar atributos ou EMSK, o suplicável consumirá atributos. Normalmente, os atributos consumidos por supplicantes são chaves. Os atributos consumidos são eatPeerId, eatServerId, eatMethodId, eatEMSK e eatCredentialsChanged. Para obter mais informações, consulte EAP_ATTRIBUTE_TYPE. Um método EAP pode exportar material EMSK adicional específico do aplicativo, como:

  • ID da sessão
  • [Proteção de Acesso à Rede] (/windows/desktop/NAP/network-access-protection-start-page) (NAP)

Quais atributos o 802.1X consome?

O supplicante nativo sem fio 802.1X consumirá os seguintes atributos de autenticação EAPHost:

  • Alterar notificação por senha
  • Chaves de envio/recebimento da MPPE (Criptografia Ponto a Ponto) da Microsoft. VendorId/VendorType = 331/16 e 311/1

As chaves MPPE são chaves geradas no final da autenticação bem-sucedida, tanto pelo par quanto pelo autenticador. Essas chaves são usadas pelo 802.1X e pelo NAS (servidor de acesso à rede) para criptografar e descriptografar pacotes enviados e recebidos.

Qual é a finalidade do sinalizador EAP_PEER_FLAG_GUEST_ACCESS no EAPHost?

Quando esse sinalizador é definido em EAPHostPeerBeginSession, o EAPHost interpreta isso como uma solicitação de autorização de convidado e retorna uma resposta de identidade NULL que, em seguida, é passada para o supplicante e retornada ao Servidor EAP.

Como o computador de solicitação supplicante é autenticado?

A autenticação do computador é solicitada definindo o sinalizador EAP_FLAG_MACHINE_AUTH .

Como o suplicante solicita a autenticação do usuário?

A autenticação do usuário é solicitada por não definir o sinalizador EAP_FLAG_MACHINE_AUTH .

Quando usar "EapHostPeerFreeErrorMemory" em vez da função "EapHostFreeEapError"?

A função EapHostPeerFreeErrorMemory é usada apenas para liberar EAP_ERROR estruturas retornadas pelas APIs de configuração do EAPHost. As APIs de configuração do EAPHost são definidas em EapHostPeerConfigApis.h. Por outro lado, a função EapHostPeerFreeEapError é usada para liberar EAP_ERROR estruturas retornadas pelas APIs de tempo de execução do EAPHost. AS APIs de tempo de execução do EAPHost são definidas em EapPApis.h. Nunca use a versão em tempo de execução da API com a versão de configuração das APIs; fazer isso pode produzir resultados inesperados.

Implementei minha interface do usuário no mesmo thread que uso para processar uma sessão de autenticação EAP no supplicante. Depois de gerar uma caixa de diálogo interativa da interface do usuário para obter credenciais ou outros dados de entrada do usuário, a próxima chamada do EAPHost para um método de par EAP falha com "ERROR_OBJECT_DISCONNECTED". Por que isso ocorreu e como faço para resolvê-lo?

Embora as APIs do lado do cliente EAPHost sejam todas APIs de estilo C, essas APIs C são apenas wrappers de APIs COM correspondentes. As APIs de estilo C são executadas em um ambiente COM multithread. O código da interface do usuário geralmente é executado no modelo de thread apartment. Como os dois modelos de thread entram em conflito entre si, não execute o código da interface do usuário no mesmo thread que processa autenticações EAP.

Por que a API "EapHostPeerBeginSession" usa um ponteiro de função de retorno de chamada "NotificationHandler" como um parâmetro?

NotificationHandler é o mecanismo pelo qual um suplicante é notificado de que ele deve se autenticar novamente. Há vários cenários em que o suplicável é necessário para autenticar novamente, incluindo a autenticação com a NAP ( Proteção de Acesso à Rede ).

Qual é a finalidade do parâmetro "pConnectionId" na API "EapHostPeerBeginSession"?

pConnectionId é um ponteiro para um valor guid definido por supplicante usado para identificar uma conexão de rede que pertence ao supplicante. Quando a função de retorno de chamada NotificationHandler é chamada, esse GUID é passado para identificar a conexão de rede que o suplicente usará para solicitações de nova autenticação.

Como fazer sabe se há uma alteração no estado de quarentena?

O usuário receberá uma notificação visual de uma alteração no estado de quarentena somente se houver pelo menos uma interface registrada de QEC (cliente de imposição de quarentena) na Proteção de Acesso à Rede (NAP) no sistema. Nesse caso, quando a nova autenticação for tentada, o usuário será notificado de uma alteração de estado de quarentena por meio de uma janela pop-up.

Como fazer sabe se há uma interface NAP QEC registrada no sistema?

Abra uma janela com privilégios elevados e execute o seguinte comando netsh: "netsh nap client show state". Para obter mais informações, consulte Comandos do Netsh.

Se o suplicante for autenticado novamente, qual ID de conexão o QEC deve usar durante a nova autenticação?

O QEC deve usar a mesma ID de conexão que foi usada para a sessão anterior.

Há apenas um método supplicante EAPHost disponível para exibir caixas de diálogo da interface do usuário, mas os métodos EAP têm vários tipos de chamadas específicas da interface do usuário. Qual método o supplicante deve chamar quando obtém o código de ação "EapHostPeerResponseInvokeUI", indicando que o supplicante deve exibir uma caixa de diálogo de interface do usuário?

Nenhuma ação é exigida pelo usuário porque o EAPHost sabe qual função de método chamar. Por exemplo, quando o código de ação EapHostPeerResponseInvokeUI é retornado, o supplicante chama essas três funções na seguinte ordem: EapHostPeerGetUIContext, EapHostPeerInvokeInteractiveUI e EapHostPeerSetUIContext.

Qual é a diferença entre um BLOB de credenciais e um BLOB de configuração?

O BLOB de credenciais contém apenas dados de usuário, como nome de usuário, senha e PIN. O BLOB de configuração contém as configurações que controlam o comportamento do método.

Posso habilitar o rastreamento no lado do cliente EAPHost?

Sim. Para obter mais informações, consulte Habilitando o rastreamento.