实现 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 验证器方法必须返回EAP_METHOD_AUTHENTICATOR_RESPONSE_SEND操作代码。 然后,当调用 EapMethodAuthenticatorSendPacket 时,它应返回一个有效的 EapPacket ,其 EAP 代码为 EapCodeSuccess。
- 如果对等身份验证的第一阶段不成功,LEAP 验证器方法应返回 EAP_METHOD_AUTHENTICATOR_RESPONSE_RESULT 操作代码。
- 在调用 EapMethodAuthenticatorSendPacket 时,LEAP 验证器方法必须返回具有EAP_METHOD_AUTHENTICATOR_RESPONSE_RESULT操作代码的最终身份验证响应数据包。 然后,在对 EapMethodAuthenticatorGetResult 的后续调用中,必须返回 EAP_SESSION_HANDLE 以标识经过身份验证的会话。
LEAP 对等方法实现
开发 LEAP 对等方法时,请确保以下事项
- 在身份验证的第一阶段 (对等身份验证) 成功后,LEAP 对等方法应返回 EapPeerMethodResponseActionSend 操作代码。
- 在第二阶段身份验证成功后,LEAP 对等方法应返回 EapPeerMethodResponseActionResult 操作代码。
相关主题