Implementando o mecanismo EAPHost LEAP
Este tópico descreve o mecanismo EAPHost que permite que terceiros escrevam módulos LEAP (Lightweight Extensible Authentication Protocol) para Windows. LEAP é um método de autenticação herdado, criado pela Cisco, de acordo com o RFC 3748. Para obter mais informações sobre LEAP, consulte Cisco LEAP Q&A.
Processo de autenticação EAPHost
O processo regular de autenticação EAPHost ocorre da seguinte maneira:
- O autenticador envia uma Solicitação para autenticar o par. Por exemplo, o aplicativo chama EapHostPeerBeginSession com a configuração EAPHost e os dados do usuário.
- O par envia um pacote de Resposta em resposta a uma Solicitação válida. Por exemplo, uma chamada bem-sucedida retorna um identificador de sessão EAP_SESSION_HANDLE.
- O autenticador envia um pacote de solicitação adicional e o par responde com uma Resposta. Por exemplo, o aplicativo chama EapHostPeerGetSendPacket para obter pacotes EAP recebidos pelo EAPHost durante toda a sessão. Cada pacote é processado por uma chamada para EapHostPeerProcessReceivedPacket.
- EapHostPeerProcessReceivedPacket sempre retornará um código de ação. Em seguida, o suplicável deve chamar a função correspondente ao código de ação.
- A sequência de Solicitações e Respostas continua enquanto necessário. Por exemplo, o aplicativo pode chamar EapHostPeerGetResponseAttributes para solicitar atributos EAP disponíveis e o par responde com EapHostPeerSetResponseAttributes para retorná-los.
- Após uma solicitação inicial, uma nova solicitação não pode ser enviada até que uma resposta válida seja recebida.
- A conversa continua até que o autenticador não possa autenticar o par; nesse caso, a implementação do autenticador deve transmitir uma falha de EAP. Por exemplo, respostas inaceitáveis a uma ou mais solicitações fariam com que o autenticador transmitisse uma falha de EAP do Código 4.
- Como alternativa, a conversa de autenticação pode continuar até que o autenticador determine que a autenticação bem-sucedida ocorreu; nesse caso, o autenticador deve transmitir um EAP Success (Código 3).
- Se o resultado indicar êxito ou falha, o aplicativo chamará EapHostPeerEndSession para encerrar a sessão. No caso de falha, a nova autenticação pode ser tentada abrindo outra sessão com EAPHost e fornecendo a mesma identidade ou uma nova.
Processo de autenticação LEAP
O processo de autenticação LEAP difere do processo regular de autenticação EAPhost da seguinte maneira:
A autenticação EAP é iniciada pelo servidor (autenticador). O LEAP, por outro lado, é iniciado pelo cliente (par).
- Portanto, ao escrever um módulo LEAP, você sempre deve garantir que o pacote solicitação de desafio do método par e a resposta EAP do servidor EAP sempre devem ter a mesma ID de pacote que a do pacote EAP Success do servidor.
Por outro lado, os pacotes solicitação e resposta e êxito do EAPHost normalmente têm IDs diferentes.
Observação
Cada Solicitação EAP tem um campo Tipo para indicar o que está sendo solicitado. Assim como acontece com o pacote Solicitação, cada pacote de resposta EAP contém um campo Tipo, que corresponde ao campo Tipo da Solicitação. Os exemplos incluem pacotes de Solicitação de Identidade e Solicitação de Desafio.
No caso de falha com o EAPHost, a nova autenticação pode ser tentada abrindo outra sessão com o EAPHost e fornecendo a mesma identidade ou uma nova identidade.
Implementação do método LEAP Authenticator
Ao desenvolver um método autenticador LEAP, verifique o seguinte:
- Os métodos do autenticador LEAP devem retornar o código de ação EAP_METHOD_AUTHENTICATOR_RESPONSE_SEND após a 1ª fase da autenticação (autenticação par) ser bem-sucedida. Em seguida, quando EapMethodAuthenticatorSendPacket é chamado, ele deve retornar um EapPacket válido com um código EAP de EapCodeSuccess.
- Os métodos do autenticador LEAP devem retornar o código de ação EAP_METHOD_AUTHENTICATOR_RESPONSE_RESULT se a 1ª fase da autenticação de pares não for bem-sucedida.
- Os métodos de autenticador LEAP devem retornar o pacote de resposta de autenticação final com o código de ação EAP_METHOD_AUTHENTICATOR_RESPONSE_RESULT quando EapMethodAuthenticatorSendPacket for chamado. Em seguida, em chamadas subsequentes para EapMethodAuthenticatorGetResult , o EAP_SESSION_HANDLE deve ser retornado para identificar a sessão autenticada.
Implementação do método par LEAP
Ao desenvolver um método par LEAP, verifique o seguinte
- Os métodos de par LEAP devem retornar o código de ação EapPeerMethodResponseActionSend depois que a 1ª fase da autenticação (autenticação de pares) for bem-sucedida.
- Os métodos de par LEAP devem retornar o código de ação EapPeerMethodResponseActionResult após a 2ª fase da autenticação ser bem-sucedida.
Tópicos relacionados