實作 EAPHost LEAP 機制
本主題描述 EAPHost 機制,可讓第三方撰寫適用於 Windows 的輕量型可延伸驗證通訊協定 (LEAP) 模組。 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 成功封包相同的封包識別碼。
相反地,EAPHost 要求和回應和成功封包通常都有不同的標識碼。
注意
每個 EAP 要求都有 [類型] 字段,以指出所要求的專案。 如同要求封包,每個 EAP 回應封包都包含類型欄位,其會對應至 [要求] 的 [類型] 字段。 範例包括身分識別要求和挑戰要求封包。
在 EAPHost 失敗的情況下,您可以使用 EAPHost 開啟另一個工作階段並提供相同的身分識別或新的身分識別,以嘗試重新驗證。
LEAP Authenticator 方法實作
開發 LEAP 驗證器方法時,請確定下列事項:
- LEAP 驗證器方法必須在驗證 (對等驗證) 的第 1 個階段成功之後, 傳回EAP_METHOD_AUTHENTICATOR_RESPONSE_SEND 動作程式碼。 然後呼叫 EapMethodAuthenticatorSendPacket 時,它應該會傳回具有 EapCodeSuccess EAP 程式代碼的有效 EapPacket。
- 如果對等驗證的第1個階段失敗,LEAP驗證器方法應該會傳回 EAP_METHOD_AUTHENTICATOR_RESPONSE_RESULT 動作程序代碼。
- 呼叫 EapMethodAuthenticatorSendPacket 時,LEAP 驗證器方法必須傳回具有EAP_METHOD_AUTHENTICATOR_RESPONSE_RESULT動作程式碼的最終驗證回應封包。 然後在後續對 EapMethodAuthenticatorGetResult 的呼叫中,必須傳回EAP_SESSION_HANDLE,才能識別已驗證的會話。
LEAP 對等方法實作
開發 LEAP 對等方法時,請確定下列事項
- LEAP 對等方法在驗證第一階段成功后,應該傳回 EapPeerMethodResponseActionSend 動作程序代碼。
- LEAP 對等方法應該會在驗證的第二個階段成功之後傳回 EapPeerMethodResponseActionResult 動作程序代碼。
相關主題