请求 API 调用序列

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

请求 API 调用序列概述

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

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

用户与请求 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 调用序列

Authenticator 方法 API 调用序列

EAPHost 调用序列

EAPHost Supplicants