En este tema se proporcionan respuestas a las preguntas más frecuentes sobre la API de supplicant de EAPHost.
¿Por qué necesito llamar a "EapHostPeerInitialize" y "EapHostPeerUninitialize"?
EapHostPeerInitialize y EapHostPeerUninitialize inicializan y anulan la inicialización del entorno COM usado para la comunicación entre procesos (IPC) entre un supplicant y EAPHost.
¿Qué funciones se deben invocar en los subprocesos que tienen COM inicializado para single Threaded Apartment (STA)?
Se debe llamar a EapHostPeerInvokeConfigUI, EapHostPeerInvokeInteractiveUI y EapHostAuthenticatorInvokeConfigUI en subprocesos que tienen COM inicializado para STA. Esto se puede lograr llamando a COM API CoInitialize; cuando el supplicante ha terminado con el subproceso STA CoUninitialize debe llamarse antes de salir.
¿Cómo exporta EAPHost el material de keying?
Los métodos EAPHost EAP exportan claves de sesión maestra (MSK) en forma de claves de cifrado de punto a punto (MPPE) de Microsoft a los suplicantes. El suplicante puede generar material de clave adicional, como claves maestras emparejadas (PMK) mediante el MSK. Para que los métodos generen cualquier otra clave durante la autenticación, los métodos pueden proporcionar esas claves como atributos específicos del proveedor a los suplicantes.
¿Qué es una clave de sesión maestra extendida (EMSK)?
EMSK es material de clave adicional exportado por el método EAP. EMSK tiene al menos 64 octetos de longitud. EMSK se comparte entre el cliente y el servidor de EAP, pero no se comparte con el autenticador ni con ningún otro tercero. Actualmente, EMSK está reservado para uso futuro. Para obtener más información, consulta Extensible Authentication Protocol EAP) Method Requirements for Wireless LANs.
¿Cuándo consume o genera un atributo un método?
Si un método EAP genera atributos o EMSK, el supplicante consumirá atributos. Normalmente, los atributos que consumen los suplicantes son claves. Los atributos consumidos son eatPeerId, eatServerId, eatMethodId, eatEMSK y eatCredentialsChanged. Para obtener más información, consulte EAP_ATTRIBUTE_TYPE. Un método EAP puede exportar material DE EMSK específico de la aplicación adicional, como:
- Identificador de sesión
- [Protección de acceso a redes] (/windows/desktop/NAP/network-access-protection-start-page) (NAP)
¿Qué atributos consume 802.1X?
El suplicante nativo inalámbrico 802.1X consumirá los siguientes atributos de autenticación EAPHost:
- Notificación de cambio de contraseña
- Claves de envío y recepción de Cifrado de punto a punto (MPPE) de Microsoft. VendorId/VendorType = 331/16 y 311/1
Las claves MPPE son claves generadas al final de la autenticación correcta, tanto del mismo nivel como del autenticador. Estas claves se usan en 802.1X y el servidor de acceso a la red (NAS) para cifrar y descifrar paquetes que se envían y reciben.
¿Cuál es el propósito de la marca EAP_PEER_FLAG_GUEST_ACCESS en EAPHost?
Cuando esta marca se establece en EAPHostPeerBeginSession, EAPHost interpreta esto como una solicitud de autorización de invitado y devuelve una respuesta de identidad NULL que luego se pasa al supplicante y se devuelve al servidor EAP.
¿Cómo solicita la autenticación del equipo supplicante?
La autenticación de la máquina se solicita estableciendo la marca EAP_FLAG_MACHINE_AUTH .
¿Cómo solicita el supplicante autenticación de usuario?
Para solicitar la autenticación de usuario, no se establece la marca EAP_FLAG_MACHINE_AUTH .
¿Cuándo uso "EapHostPeerFreeErrorMemory" en lugar de la función "EapHostFreeEapError"?
La función EapHostPeerFreeErrorMemory solo se usa para liberar EAP_ERROR estructuras devueltas por las API de configuración de EAPHost. Las API de configuración de EAPHost se definen en EapHostPeerConfigApis.h. En cambio, la función EapHostPeerFreeEapError se usa para liberar EAP_ERROR estructuras devueltas por las API en tiempo de ejecución de EAPHost. Las API en tiempo de ejecución de EAPHost se definen en EapPApis.h. Nunca use la versión en tiempo de ejecución de la API con la versión de configuración de las API; para ello, podría generar resultados inesperados.
He implementado mi interfaz de usuario en el mismo subproceso que utilizo para procesar una sesión de autenticación de EAP en el suplicante. Después de haber generado un cuadro de diálogo de interfaz de usuario interactiva para obtener credenciales u otros datos de entrada de usuario, se produce un error en la siguiente llamada de EAPHost a un método del mismo nivel de EAP con "ERROR_OBJECT_DISCONNECTED". ¿Por qué se ha producido esto y cómo lo direcciono?
Aunque las API del lado cliente de EAPHost son todas las API de estilo C, estas API de C son solo contenedores de las API COM correspondientes. Las API de estilo C se ejecutan en un entorno COM multiproceso. Normalmente, el código de interfaz de usuario se ejecuta en el modelo de subprocesos de apartamento. Dado que los dos modelos de subprocesos entran en conflicto entre sí, no ejecuten el código de interfaz de usuario en el mismo subproceso que procesa las autenticaciones de EAP.
¿Por qué la API "EapHostPeerBeginSession" toma un puntero de función de devolución de llamada "NotificationHandler" como parámetro?
NotificationHandler es el mecanismo por el que se notifica a un supplicante que debe volver a autenticarse. Hay varios escenarios en los que se requiere el suplicante para volver a autenticarse, incluida la autenticación con protección de acceso a redes (NAP).
¿Cuál es el propósito del parámetro "pConnectionId" en la API "EapHostPeerBeginSession"?
pConnectionId es un puntero a un valor GUID definido por suplicante que se usa para identificar una conexión de red que pertenece al suplicante. Cuando se llama a la función de devolución de llamada NotificationHandler , este GUID se pasa para identificar la conexión de red que usará el suplicante para las solicitudes de re-autenticación.
Cómo saber si hay un cambio en el estado de cuarentena?
El usuario recibirá una notificación visual de un cambio en el estado de cuarentena solo si hay al menos una interfaz registrada del cliente de cumplimiento de cuarentena (QEC) de protección de acceso a redes (NAP) en el sistema. Si es así, cuando se intenta volver a autenticar, el usuario recibirá una notificación de un cambio de estado de cuarentena a través de una ventana emergente.
Cómo saber si hay una interfaz registrada nap QEC en el sistema?
Abra una ventana con privilegios elevados y ejecute el siguiente comando netsh: "netsh nap client show state". Para obtener más información, vea Comandos netsh.
Si el supplicante se vuelve a autenticar, ¿qué identificador de conexión debe usar el QEC durante la re-autenticación?
El QEC debe usar el mismo identificador de conexión que se usó para la sesión anterior.
Solo hay un método supplicante EAPHost disponible para mostrar cuadros de diálogo de la interfaz de usuario (UI), pero los métodos EAP tienen varios tipos de llamadas específicas de la interfaz de usuario. ¿Qué método debe llamar al suplicante cuando obtiene el código de acción "EapHostPeerResponseInvokeUI", que indica que el supplicante debe mostrar un cuadro de diálogo de interfaz de usuario?
El usuario no requiere ninguna acción porque EAPHost sabe a qué función de método llamar. Por ejemplo, cuando se devuelve el código de acción EapHostPeerResponseInvokeUI , el suplicante llama a estas tres funciones en el orden siguiente: EapHostPeerGetUIContext, EapHostPeerInvokeInteractiveUI y EapHostPeerSetUIContext.
¿Cuál es la diferencia entre un BLOB de credenciales y un BLOB de configuración?
Las credenciales BLOB solo contienen datos de usuario, como el nombre de usuario, la contraseña y el PIN. El BLOB de configuración contiene los valores que controlan el comportamiento del método.
¿Puedo habilitar el seguimiento en el lado cliente de EAPHost?
Sí. Para obtener más información, consulte Habilitación del seguimiento.