共用方式為


Supplicant API 呼叫順序

本主題提供要求 API 的特定呼叫順序。

Supplicant API 呼叫順序概觀

當要求者從提供者接收 EAP 封包時,例如存取點,通常會發生下列要求 API 呼叫流程。

  • 應用程式會使用 EAPHost 組態數據和用戶數據呼叫 EapHostPeerBeginSession。 成功的呼叫會傳回 EAP_SESSION_HANDLE 會話句柄。
  • 要求者收到的每個封包都會由呼叫 EapHostPeerProcessReceivedPacket來處理。 然後,起訴者會呼叫函式,該函式會對應至函式所傳回的動作程序代碼。
  • 如果動作程式代碼 EapHostPeerResponseSend,則要求者會呼叫 EapHostPeerGetSendPacket,以取得要傳送至驗證器的回應。
  • 如果在會話期間,傳回給supplicant的動作程式碼 EapHostPeerResponseRespond,表示 EAP 屬性可供使用。 然後,要求者會呼叫 EapHostPeerGetResponseAttributes 來取得它們。 這些屬性包含驗證程式期間所使用的補充數據。 在要求者完成處理屬性之後,它會呼叫 EapHostPeerSetResponseAttributes 以更新數據。 此函式會傳回動作程式代碼,這個程式代碼會決定起訴者的下一個動作。
  • 如果動作程式代碼 EapHostPeerResponseInvokeUI 要求者會引發使用者介面對話方塊,以從使用者取得互動式數據,例如認證或身分識別資訊。 請參閱下方的使用者與 Supplicant API 呼叫流程的互動。
  • 如果動作程式代碼 EapHostPeerResponseResult,表示驗證會話的結果可供要求者使用。 然後,要求者會呼叫 EapHostPeerGetResult 以取得結果。 無論結果指出成功還是失敗,訴求者都會呼叫 EapHostPeerEndSession。 在失敗的情況下,您可以使用 EAPHost 開啟另一個工作階段並提供新的身分識別,或再次嘗試使用原始身分識別進行驗證,以嘗試重新驗證。

使用者與 Supplicant API 呼叫流程的互動

在某些情況下,要求者必須從使用者取得資訊,才能繼續驗證程式。

下列清單示範啟用互動式輸入所需的要求和 EAPHost UI 程式呼叫順序。

  1. supplicant 會呼叫 EapHostPeerGetUIContext來取得目前的使用者介面內容。

  2. 然後,起訴者會將UI內容數據傳送至起訴者UI進程。

    注意

    通常收集UI或處理互動式UI的UI進程與要求進程不同。 分隔這兩個進程並非EAPHost的需求,但這樣做的優點是允許UI進程與桌面互動。

     

  3. 如果 supplicant 想要自行轉譯 UI,則會呼叫 EapHostPeerQueryInteractiveUIInputFields 函式,以取得要引發互動式 UI 元件的輸入字段。 否則,它會呼叫 EapHostPeerInvokeInteractiveUI,遵循叫用方法互動式 UI 的傳統模型

    注意

    如果傳回 EAP_E_EAPHOST_METHOD_OPERATION_NOT_SUPPORTED,要求者必須遵循叫用方法互動式 UI 的傳統模型,方法是呼叫 EapHostPeerInvokeInteractiveUI。 如果發生錯誤,EapHostPestPeerQueryInteractiveUIInputFields 會傳回 NULL 以外的傳回碼。

     

  4. 要求者會呼叫 EapHostPeerQueryInteractiveUIInputFieldsEaphostPeerInvokeInteractiveUI UI 程式傳遞現有的內容數據並載入 Eappcfg.dll。 會引發適當的UI來收集新的數據。 現在可能會包含使用者輸入的新UI內容數據會複製,而舊的內容數據會隨著呼叫EapPeerFreeMemory 來發行。

  5. UI 程式會將新的內容數據傳回至 supplicant,它會呼叫 EapHostPeerSetUIContext 加以設定。

對等方法 API 呼叫順序

Authenticator 方法 API 呼叫順序

EAPHost 呼叫順序

EAPHost Supplicants