Supplicant API 调用序列

本主题提供请求 API 的特定调用序列。

Supplicant API 调用序列概述

当请求方从提供程序(如接入点)接收 EAP 数据包时,通常会发生以下请求 API 调用流。

  • 应用程序使用 EAPHost 配置数据和用户数据调用 EapHostPeerBeginSession。 成功的调用返回 EAP_SESSION_HANDLE 会话句柄。
  • 通过调用 EapHostPeerProcessReceivedPacket处理请求方接收的每个数据包。 然后,请求方调用与函数返回的作代码对应的函数。
  • 如果作代码 EapHostPeerResponseSend,则请求方将调用 EapHostPeerGetSendPacket 以获取要发送到验证器的响应。
  • 如果在会话期间,返回给请求者的作代码 EapHostPeerResponseRespond,则表示 EAP 属性可用。 然后,请求者调用 EapHostPeerGetResponseAttributes 获取它们。 这些属性包含身份验证过程中使用的补充数据。 在请求者完成处理它调用的属性后,它将 EapHostPeerSetResponseAttributes 来更新数据。 此函数返回一个作代码,用于确定请求人的下一个作。
  • 如果作代码 EapHostPeerResponseInvokeUI 请求者会引发用户界面对话框,以便从用户(例如凭据或标识信息)获取交互式数据。 请参阅下面的用户与 Supplicant API 调用流交互。
  • 如果作代码 EapHostPeerResponseResult,则表示身份验证会话的结果可用于请求者。 然后,请求方调用 EapHostPeerGetResult 以获取结果。 无论结果是否指示成功还是失败,请求方都会调用 EapHostPeerEndSession。 如果失败,可以通过使用 EAPHost 打开另一个会话并提供新标识或再次尝试使用原始标识进行身份验证来尝试重新身份验证。

用户与 Supplicant API 调用流交互

在某些情况下,请求者需要从用户获取信息才能继续身份验证过程。

以下列表演示了启用交互式输入所需的对请求者和 EAPHost UI 进程的调用序列。

  1. 请求者通过调用 EapHostPeerGetUIContext来获取当前用户界面上下文。

  2. 然后,请求者将 UI 上下文数据发送到请求 UI 进程。

    注意

    通常收集 UI 或处理交互式 UI 的 UI 进程与请求进程分开。 分离这两个进程不是 EAPHost 的要求,但这样做的优点是允许 UI 进程与桌面交互。

     

  3. 如果请求者想要自行呈现 UI,则它调用 EapHostPeerQueryInteractiveUIInputFields 函数以获取要引发的交互式 UI 组件的输入字段。 否则,它通过调用 EapHostPeerInvokeInteractiveUI 遵循调用方法交互式 UI 的传统模型

    注意

    如果返回 EAP_E_EAPHOST_METHOD_OPERATION_NOT_SUPPORTED,则请求者必须通过调用 EapHostPeerInvokeInteractiveUI来遵循调用方法交互式 UI 的传统模型。 如果出现错误,EapHostPeerQueryInteractiveUIInputFields 将返回除 NULL 以外的返回代码。

     

  4. 请求者 EapHostPeerQueryInteractiveUIInputFields 还是 EaphostPeerInvokeInteractiveUI UI 进程传递现有上下文数据并加载 Eappcfg.dll。 引发适当的 UI 以收集新数据。 新的 UI 上下文数据(现在可能包含用户输入)被复制,旧上下文数据通过调用 EapPeerFreeMemory发布。

  5. UI 进程将新的上下文数据返回到请求方,该数据调用 EapHostPeerSetUIContext 来设置它。

对等方法 API 调用序列

验证器方法 API 调用序列

EAPHost 调用序列

EAPHost Supplicants