Реализация механизма LEAP EAPHost
В этом разделе описывается механизм EAPHost, позволяющий третьим лицам записывать модули упрощенного расширяемого протокола проверки подлинности (LEAP) для Windows. LEAP — это устаревший метод проверки подлинности, созданный Cisco, как по стандарту RFC 3748. Дополнительные сведения о LEAP см. в разделе Cisco LEAP Q&A.
Процесс проверки подлинности EAPHost
Обычный процесс проверки подлинности EAPHost выполняется следующим образом:
- Средство проверки подлинности отправляет запрос для проверки подлинности однорангового узла. Например, приложение вызывает EapHostPeerBeginSession с конфигурацией EAPHost и данными пользователя.
- Одноранговый узел отправляет пакет ответа в ответ на допустимый запрос. Например, успешный вызов возвращает дескриптор сеанса EAP_SESSION_HANDLE .
- Средство проверки подлинности отправляет дополнительный пакет запроса и ответы однорангового узла с ответом. Например, приложение вызывает EapHostPeerGetSendPacket для получения пакетов EAP, полученных EAPHost на протяжении всего сеанса. Каждый пакет обрабатывается вызовом EapHostPeerProcessReceivedPacket.
- EapHostPeerProcessReceivedPacket всегда возвращает код действия. Затем запрашивающий должен вызвать функцию, соответствующую коду действия.
- Последовательность запросов и ответов продолжается до тех пор, пока это необходимо. Например, приложение может вызвать EapHostPeerGetResponseAttributes для запроса доступных атрибутов EAP, а одноранговый узел отвечает с помощью EapHostPeerSetResponseAttributes, чтобы вернуть их.
- После первоначального запроса новый запрос не может быть отправлен до получения допустимого ответа.
- Беседа продолжается до тех пор, пока средство проверки подлинности не сможет пройти проверку подлинности однорангового узла, в этом случае реализация аутентификатора должна передавать ошибку EAP. Например, неприемлемые ответы на один или несколько запросов могут привести к тому, что средство проверки подлинности передает сбой кода 4 EAP.
- Кроме того, беседа проверки подлинности может продолжаться до тех пор, пока средство проверки подлинности не определит, что произошла успешная проверка подлинности, в этом случае аутентификатор должен передать успешное выполнение EAP (код 3).
- Указывает ли результат на успешность или сбой, приложение вызывает EapHostPeerEndSession для завершения сеанса. В случае сбоя можно выполнить повторную проверку подлинности, открыв другой сеанс с EAPHost и предоставив то же или новое удостоверение.
Процесс проверки подлинности LEAP
Процесс проверки подлинности LEAP отличается от обычного процесса проверки подлинности EAPhost следующим образом:
Проверка подлинности EAP инициируется сервером (authenticator). LEAP, напротив, инициируется клиентом (одноранговым сервером).
- Поэтому при написании модуля LEAP всегда необходимо убедиться, что пакет запроса вызовов из однорангового метода и ответ EAP с сервера EAP всегда должен иметь тот же идентификатор пакета, что и пакет успешного выполнения EAP с сервера.
В отличие от этого, пакеты запроса и ответа EAPHost и успешного выполнения обычно имеют разные идентификаторы.
Примечание.
Каждый запрос EAP имеет поле "Тип", чтобы указать, что запрашивается. Как и в случае с пакетом запроса, каждый пакет ответа EAP содержит поле "Тип", соответствующее полю "Тип" запроса. К примерам относятся пакеты запросов удостоверений и запросов вызовов.
В случае сбоя с EAPHost повторная проверка подлинности может быть предпринята путем открытия другого сеанса с EAPHost и предоставления того же удостоверения или нового удостоверения.
Реализация метода LEAP Authenticator
При разработке метода проверки подлинности LEAP убедитесь в следующем:
- Методы проверки подлинности LEAP должны возвращать код действия EAP_METHOD_AUTHENTICATOR_RESPONSE_SEND после успешного выполнения 1-го этапа проверки подлинности (одноранговая проверка подлинности). Затем при вызове EapMethodAuthenticatorSendPacket он должен возвращать допустимый EapPacket с кодом EAP EapCodeSuccess.
- Методы проверки подлинности LEAP должны возвращать код действия EAP_METHOD_AUTHENTICATOR_RESPONSE_RESULT , если не удалось выполнить 1-й этап проверки подлинности однорангового узла.
- Методы LEAP authenticator должны возвращать окончательный пакет ответа проверки подлинности с кодом действия EAP_METHOD_AUTHENTICATOR_RESPONSE_RESULT при вызове EapMethodAuthenticatorSendPacket. Затем в последующих вызовах EapMethodAuthenticatorGetResult необходимо вернуть EAP_SESSION_HANDLE, чтобы определить прошедший проверку подлинности сеанс.
Реализация однорангового метода LEAP
При разработке однорангового метода LEAP убедитесь в следующем.
- Методы однорангового узла LEAP должны возвращать код действия EapPeerMethodResponseActionSend после успешного выполнения 1-го этапа проверки подлинности (одноранговая проверка подлинности).
- Методы однорангового узла LEAP должны возвращать код действия EapPeerMethodResponseActionResult после успешного выполнения 2-го этапа проверки подлинности.
См. также