实现 EAPHost LEAP 机制

本主题介绍允许第三方 (LEAP) Windows 模块编写轻型可扩展身份验证协议的 EAPHost 机制。 LEAP 是一种旧式身份验证方法,由 Cisco 根据 RFC 3748 创建。 有关 LEAP 的详细信息,请参阅 Cisco LEAP Q&A

EAPHost 身份验证过程

常规的 EAPHost 身份验证过程如下所示:

  • 验证器发送请求以对等方进行身份验证。 例如,应用程序使用 EAPHost 配置和用户数据调用 EapHostPeerBeginSession
  • 对等方发送响应数据包以回复有效请求。 例如,成功的调用返回 EAP_SESSION_HANDLE 会话句柄。
  • 验证器发送其他请求数据包,对等方使用响应进行答复。 例如,应用程序调用 EapHostPeerGetSendPacket 以获取 EAPHost 在整个会话中接收的 EAP 数据包。 每个数据包通过调用 EapHostPeerProcessReceivedPacket 进行处理。
  • EapHostPeerProcessReceivedPacket 将始终返回操作代码。 然后,请求者必须调用与操作代码对应的函数。
  • 请求和响应的序列会根据需要继续运行。 例如,应用程序可以调用 EapHostPeerGetResponseAttributes 来请求可用的 EAP 属性,而对等方使用 EapHostPeerSetResponseAttributes 进行响应以返回它们。
  • 在初始请求之后,在收到有效的响应之前,无法发送新的请求。
  • 聊天会一直持续到验证器无法对对等方进行身份验证,在这种情况下,验证器实现必须传输 EAP 失败。 例如,对一个或多个请求的不可接受的响应会导致验证器传输代码 4 EAP 失败。
  • 或者,身份验证会话可以继续,直到验证器确定身份验证成功,在这种情况下,验证器必须传输 EAP 成功 (代码 3) 。
  • 无论结果指示成功还是失败,应用程序都调用 EapHostPeerEndSession 来终止会话。 如果失败,可以通过使用 EAPHost 打开另一个会话并提供相同或新的标识来尝试重新身份验证。

LEAP 身份验证过程

LEAP 身份验证过程不同于常规 EAPhost 身份验证过程,如下所示:

  • EAP 身份验证由服务器 (验证器) 启动。 相比之下,LEAP 是由客户端 (对等) 启动的。

    • 因此,在编写 LEAP 模块时,必须始终确保来自对等方法的质询请求数据包和来自 EAP 服务器的 EAP 响应必须始终具有与来自服务器的 EAP 成功数据包相同的数据包 ID。
    • 相比之下,EAPHost 请求和响应和成功数据包通常都具有不同的 ID。

      注意

      每个 EAP 请求都有一个“类型”字段,用于指示正在请求的内容。 与请求数据包一样,每个 EAP 响应数据包都包含一个类型字段,该字段对应于请求的“类型”字段。 示例包括标识请求和质询请求数据包。

       

  • 如果 EAPHost 失败,可以通过使用 EAPHost 打开另一个会话并提供相同的标识或新标识来尝试重新身份验证。

LEAP Authenticator 方法实现

开发 LEAP 验证器方法时,请确保以下各项:

LEAP 对等方法实现

开发 LEAP 对等方法时,请确保以下事项

EAPHost 调用序列

使用 EAPHost