Supplicant API 呼叫順序
本主題提供支援 API 的特定呼叫順序。
Supplicant API 呼叫順序概觀
當要求者收到來自提供者的 EAP 封包時,例如存取點,通常會發生下列支援 API 呼叫流程。
- 應用程式會使用 EAPHost 組態資料和使用者資料呼叫 EapHostPeerBeginSession 。 成功的呼叫會傳回 EAP_SESSION_HANDLE 會話控制碼。
- 每個由支援者接收的封包都會由 EapHostPeerProcessReceivedPacket的呼叫來處理。 接著,要求者會呼叫函式,該函式會對應至函式所傳回的動作程式碼。
- 如果動作程式碼是 EapHostPeerResponseSend,則 supplicant 會呼叫 EapHostPeerGetSendPacket 以取得要傳送至驗證器的回應。
- 如果在會話期間,傳回給 supplicant 的動作代碼是 EapHostPeerResponseRespond,則表示 EAP 屬性可供使用。 接著,supplicant 會呼叫 EapHostPeerGetResponseAttributes 來取得它們。 這些屬性包含驗證程式期間所使用的補充資料。 在 supplicant 完成處理屬性之後,它會呼叫 EapHostPeerSetResponseAttributes 來更新資料。 此函式會傳回動作程式碼,決定支援者的下一個動作。
- 如果動作程式碼是 EapHostPeerResponseInvokeUI ,supplicant 會引發使用者介面對話方塊,以從使用者取得互動式資料,例如認證或身分識別資訊。 請參閱下面的使用者與 Supplicant API 呼叫流程的互動。
- 如果動作程式碼是 EapHostPeerResponseResult,表示驗證會話的結果可供要求者使用。 接著,要求者會呼叫 EapHostPeerGetResult 以取得結果。 不論結果是否表示成功或失敗,建議者都會呼叫 EapHostPeerEndSession。 如果發生失敗,可以嘗試重新驗證,方法是使用 EAPHost 開啟另一個會話並提供新的身分識別,或再次嘗試使用原始身分識別進行驗證。
使用者與 Supplicant API 呼叫流程的互動
在某些情況下,要求者必須從使用者取得資訊,才能繼續驗證程式。
下列清單示範啟用互動式輸入所需的要求和 EAPHost UI 程式上的呼叫順序。
支援者藉由呼叫 EapHostPeerGetUICoNtext來取得目前的使用者介面內容。
接著,要求者會將 UI 內容資料傳送至 supplicant UI 程式。
注意
通常收集 UI 或控制碼互動式 UI 的 UI 程式與建議程式不同。 分隔這兩個進程並非 EAPHost 的需求,但這麼做的優點是允許 UI 程式與桌面互動。
如果要求者想要自行轉譯 UI,則會呼叫 EapHostPeerQueryInteractiveUIInputFields 函式,以取得要引發之互動式 UI 元件的輸入欄位。 否則,它會呼叫EapHostPeerInvokeInteractiveUI,遵循叫用方法互動式 UI 的傳統模型
注意
如果 傳回EAP_E_EAPHOST_METHOD_OPERATION_NOT_SUPPORTED ,則要求者必須藉由呼叫 EapHostPeerInvokeInteractiveUI,遵循叫用方法互動式 UI 的傳統模型。 如果發生錯誤, EapHostPeerQueryInteractiveUIInputFields 會傳回 Null以外的傳回碼。
不論 supplicant 呼叫 EapHostPeerQueryInteractiveUIInputFields 還是 EaphostPeerInvokeInteractiveUI ,UI 進程都會傳遞現有的內容資料並載入Eappcfg.dll。 系統會引發適當的 UI 來收集新的資料。 現在可能會包含使用者輸入的新 UI 內容資料會複製,而舊的內容資料會透過 呼叫 EapPeerFreeMemory來釋放。
UI 進程會將新的內容資料傳回給 supplicant,它會呼叫 EapHostPeerSetUICoNtext 來設定它。
相關主題