Interfaz de usuario interactiva
El proveedor que implementa el protocolo de autenticación también puede proporcionar una interfaz de usuario (UI) interactiva para el protocolo. La interfaz de usuario interactiva permite que el protocolo de autenticación obtenga información adicional del usuario según sea necesario durante el transcurso de la sesión de autenticación.
La interfaz de usuario interactivo se puede implementar en el mismo archivo DLL que el protocolo de autenticación o en un archivo DLL independiente. Además, el archivo DLL que implementa la interfaz de usuario interactivo puede admitir más de un protocolo de autenticación. La ruta de acceso a la DLL para la interfaz de usuario interactivo se almacena en el valor del Registro de RAS_EAP_VALUENAME_INTERACTIVEUI, en la clave del protocolo de autenticación. Para obtener más información acerca de cómo crear este valor del Registro, consulte Instalación de EAP.
El DLL de la interfaz de usuario interactivo debe exportar puntos de entrada para las funciones siguientes:
La interfaz de usuario interactivo debe admitir WM_COMMAND mensajes donde LOWORD (wParam) sea igual a IDCANCEL.
Para mostrar la interfaz de usuario interactivo, el protocolo de autenticación debe establecer el fInvokeInteractiveUI miembro de la estructura de PPP_EAP_OUTPUT en TRUE. Opcionalmente, el protocolo de autenticación puede establecer el pUIContextData y dwSizeOfUIContextData en TRUE. El servicio de autenticación usa los valores de estos miembros para pasar datos de contexto a la interfaz de usuario interactivo. El protocolo de autenticación devuelve la estructura PPP_EAP_OUTPUT como parámetro en la función RasEapMakeMessage.
El servicio de autenticación invoca la interfaz de usuario interactiva llamando a RasEapInvokeInteractiveUI. A continuación, el servicio pasa el protocolo de autenticación un puntero a los datos devueltos por la interfaz de usuario interactiva en la llamada posterior a RasEapMakeMessage. El puntero se pasa como miembro de una estructura de PPP_EAP_INPUT. Después de RasEapMakeMessage, el servicio llama a RasEapFreeMemory para liberar la memoria ocupada por la información. Por lo tanto, el protocolo de autenticación debe copiar la información en un búfer de memoria privada durante la llamada a RasEapMakeMessage.