Interface do usuário interativa

O fornecedor que implementa o protocolo de autenticação também pode fornecer uma IU (interface do usuário) interativa para o protocolo. A interface do usuário interativa permite que o protocolo de autenticação obtenha informações adicionais do usuário, conforme necessário, durante a sessão de autenticação.

A interface do usuário interativa pode ser implementada na mesma DLL que o protocolo de autenticação ou em uma DLL separada. Além disso, a DLL que implementa a interface do usuário interativa pode ser compatível com mais de um protocolo de autenticação. O caminho para a DLL da interface do usuário interativa é armazenado no valor de registro RAS_EAP_VALUENAME_INTERACTIVEUI, na chave do protocolo de autenticação. Para obter mais informações sobre a criação desse valor de registro, confira Instalação do EAP.

A DLL da interface do usuário interativa deve exportar pontos de entrada para as seguintes funções:

RasEapInvokeInteractiveUI
RasEapFreeMemory

A interface do usuário interativa deve oferecer suporte a mensagens WM_COMMAND em que LOWORD (wParam) é igual a IDCANCEL.

Para exibir a interface do usuário interativa, o protocolo de autenticação deve definir o membro fInvokeInteractiveUI da estrutura PPP_EAP_OUTPUT como TRUE. O protocolo de autenticação também pode, opcionalmente, definir os membros pUIContextData e dwSizeOfUIContextData como TRUE. O serviço de autenticação usa os valores desses membros para passar dados de contexto para a interface do usuário interativa. O protocolo de autenticação retorna a estrutura PPP_EAP_OUTPUT como um parâmetro na função RasEapMakeMessage.

O serviço de autenticação invoca a interface do usuário interativa chamando RasEapInvokeInteractiveUI. Em seguida, o serviço passa ao protocolo de autenticação um ponteiro para os dados retornados pela interface do usuário interativa na chamada subsequente para RasEapMakeMessage. O ponteiro é passado como membro de uma estrutura PPP_EAP_INPUT. Depois que RasEapMakeMessage retorna, o serviço chama RasEapFreeMemory para liberar a memória ocupada pelas informações. Portanto, o protocolo de autenticação deve copiar as informações em um buffer de memória privado durante a chamada para RasEapMakeMessage.