与本机 802.11 802.1X 模块对接
操作系统收到来自 Native 802.11 微型端口驱动程序的NDIS_STATUS_DOT11_ASSOCIATION_COMPLETION指示后,它会调用 Dot11ExtIhvPerformPostAssociate 函数,以通过 IHV 扩展 DLL 启动关联后操作。
当它执行关联后操作或在操作完成后,IHV 扩展 DLL 可以使用操作系统支持的可扩展身份验证协议 (EAP) 算法,通过接入点 (AP) 对用户进行身份验证。 在这种情况下,IHV 扩展 DLL 与本机 802.11 框架的 802.1X 模块接口,用于处理 AP 通过 LAN (EAPOL 以 EAP 发送的 EAP 数据包) 格式。
有关 EAPOL 格式的详细信息,请参阅 IEEE 802.1X-2001 标准的第 7 条。
有关 802.1X 模块和本机 802.11 框架的详细信息,请参阅 本机 802.11 软件体系结构。
为用户身份验证连接 802.1X 模块时,IHV 扩展 DLL 必须遵循以下准则:
对于 Windows Vista,IHV 扩展 DLL 可以通过 802.1X 模块启动 802.1X 身份验证操作,仅适用于基础结构基本服务集 (BSS) 网络连接。
IHV 扩展 DLL 必须向操作系统注册才能接收 EAPOL 数据包。 在这种情况下,DLL 必须调用 Dot11ExtSetEtherTypeHandling 函数,并将 IEEE EAPOL EtherType (0x888E) 添加到通过 pusRegistration 参数传入的已注册 EtherType 列表。 注册 EtherType 后,操作系统通过调用 Dot11ExtIhvReceivePacket IHV 处理程序函数,将收到的 EAPOL 数据包转发到 IHV 扩展 DLL。
有关注册 EtherType 的详细信息,请参阅 IEEE EtherType 处理。
当它执行关联后操作时,IHV 扩展 DLL 通过调用 Dot11ExtStartOneX 函数启动 802.1X 身份验证操作。 调用此函数时,操作系统将执行以下操作:
- 显示 802.1X 身份验证配置的属性页。 此信息包括用于身份验证的 EAP 算法。
- 提示用户输入凭据。
- 将 EAPOL-Start 数据包发送到 AP 以启动 802.1X 身份验证。
IHV 扩展 DLL 可以在对 Dot11ExtIhvPerformPostAssociate 的调用中或在函数调用返回后调用 Dot11ExtStartOneX。
只有在本机 802.11 微型端口驱动程序完成与 AP 的关联操作后,IHV 扩展 DLL 才能调用 Dot11ExtStartOneX 函数。 在这种情况下,IHV 扩展 DLL 不得在以下任何条件下调用 Dot11ExtStartOneX 函数:
- 在操作系统调用 Dot11ExtIhvPerformPostAssociate 之前。 在微型端口驱动程序成功完成关联操作后,操作系统会调用此函数。 有关此操作的详细信息,请参阅 关联操作。
- 在操作系统调用 Dot11ExtIhvStopPostAssociate 之后。 在微型端口驱动程序完成与 AP 的取消关联操作后,操作系统会调用此函数。 有关此操作的详细信息,请参阅 取消关联操作。
- 在操作系统调用 Dot11ExtIhvAdapterReset 之后。 在微型端口驱动程序使用 BSS) 网络 (基本服务集完成断开连接操作后,操作系统会调用此函数。 有关此操作的详细信息,请参阅 断开连接操作。
当 802.1X 身份验证操作正在进行时,IHV 扩展 DLL 可以通过调用 Dot11ExtStopOneX 来取消该操作。
当 802.1X 身份验证操作正在进行时,IHV 扩展 DLL 必须调用 Dot11ExtProcessOneXPacket ,以将 EAPOL 数据包转发到操作系统进行处理。 注意 IHV 扩展 DLL 负责处理从 AP 收到的 EAPOL-Key 数据包。 DLL 不得通过调用 Dot11ExtProcessOneXPacket 将这些数据包传递到操作系统。
802.1X 身份验证操作完成后,操作系统将调用 Dot11ExtIhvOneXIndicateResult IHV 处理程序函数。 调用此函数后,IHV 扩展 DLL 负责处理从 AP 接收的所有 EAPOL 数据包,例如用于派生密码密钥的 EAPOL-Key 数据包。
如果 802.1X 身份验证操作成功完成,操作系统会将 MPPE-Send-Key 值传递给 Dot11ExtIhvOneXIndicateResultResult 的 pDot11MsOneXResultParams 参数所指向的DOT11_MSONEX_RESULT_PARAMS结构。 DOT11_MSONEX_RESULT_PARAMS的 pbMPPESendKey 成员指向的 MPPE-Send-Key 值通过身份验证过程派生,并在将 EAPOL-Key 数据包发送到 AP 时由 IHV 扩展 DLL 使用。 此密钥已加密,应通过调用 Windows SDK 中记录的 CryptUnprotectData 函数进行解密。
用于派生密码密钥的算法取决于独立硬件供应商 (IHV) 的实现。 IHV 扩展 DLL 可以支持标准密钥派生算法,例如 IEEE 802.11i-2004 标准的第 8.5 条中定义的算法,还可以支持专有密钥派生算法。
派生密钥后,IHV 扩展 DLL 可以调用以下函数将密码密钥下载到本机 802.11 微型端口驱动程序,该驱动程序管理无线 LAN (WLAN) 适配器。
IHV 扩展 DLL 通过调用 Dot11ExtPostAssociateCompletion 函数完成关联后操作。 关联后操作完成后,如果 DLL 确定必须重新对用户进行身份验证,IHV 扩展 DLL 可以启动另一个 802.1X 身份验证操作。
下图显示了 IHV 扩展 DLL 在关联后操作期间启动 802.1X 身份验证操作时的事件序列。