Поделиться через


Последовательность вызовов API запрашивающего

В этом разделе приведена последовательность вызовов для API запрашивающего.

Общие сведения о последовательности вызовов API-интерфейса запрашивающего

Когда запрашивающий получает пакет EAP от поставщика, например точки доступа, обычно возникает следующий поток вызова API запрашивающего.

  • Приложение вызывает EapHostPeerBeginSession с данными конфигурации EAPHost и пользовательскими данными. Успешный вызов возвращает дескриптор сеанса EAP_SESSION_HANDLE .
  • Каждый пакет, полученный запрашивающим, обрабатывается вызовом EapHostPeerProcessReceivedPacket. Затем запрашивающий вызывает функцию, соответствующую коду действия, возвращаемого функцией.
  • Если код действия — EapHostPeerResponseSend, то запрашивающий вызывает EapHostPeerGetSendPacket , чтобы получить ответ, отправляемый в средство проверки подлинности.
  • Если во время сеанса запрашивающий объект возвращает код действия EapHostPeerResponseRespond, это означает, что атрибуты EAP доступны. Затем запрашивающий вызывает EapHostPeerGetResponseAttributes , чтобы получить их. Эти атрибуты содержат дополнительные данные, используемые в процессе проверки подлинности. После завершения обработки атрибутов проситель вызывает EapHostPeerSetResponseAttributes , который обновляет данные. Эта функция возвращает код действия, который определяет следующее действие запрашивающего.
  • Если код действия — EapHostPeerResponseInvokeUI , запрашивающий пользователь создает диалоговое окно пользовательского интерфейса для получения интерактивных данных от пользователя, таких как учетные данные или сведения об удостоверении. См. раздел Взаимодействие пользователя с потоком вызовов API запрашивающего пользователя ниже.
  • Если код действия — EapHostPeerResponseResult, он указывает, что результаты сеанса проверки подлинности доступны запрашивателю. Затем запрашивающий вызывает EapHostPeerGetResult , чтобы получить результаты. Независимо от того, указывают ли результаты на успех или сбой, запрашивающий вызывает EapHostPeerEndSession. В случае сбоя можно попытаться выполнить повторную проверку подлинности, открыв еще один сеанс с EAPHost и предоставив новое удостоверение или повторно выполнив попытку проверки подлинности с помощью исходного удостоверения.

Взаимодействие пользователя с потоком вызовов API запрашивающего пользователя

В некоторых случаях запрашивающий должен получить информацию от пользователя, чтобы продолжить процесс проверки подлинности.

В следующем списке показана последовательность вызовов для запрашивающего элемента и процесса пользовательского интерфейса EAPHost, необходимого для включения интерактивного ввода.

  1. Запрашивающий объект получает текущий контекст пользовательского интерфейса, вызывая EapHostPeerGetUIContext.

  2. Затем запрашивающий отправляет данные контекста пользовательского интерфейса в процесс пользовательского интерфейса запрашивающего пользователя.

    Примечание

    Процесс пользовательского интерфейса, который обычно собирает пользовательский интерфейс или обрабатывает интерактивный пользовательский интерфейс, отделен от процесса запрашивающего. Разделение двух процессов не является обязательным требованием EAPHost, но это дает возможность процессу пользовательского интерфейса взаимодействовать с рабочим столом.

     

  3. Если запрашивающий пользователь хочет отобразить пользовательский интерфейс сам по себе, он вызывает функцию EapHostPeerQueryInteractiveUIInputFields , чтобы получить поля ввода для создаваемых интерактивных компонентов пользовательского интерфейса. В противном случае он следует традиционной модели вызова интерактивного пользовательского интерфейса метода путем вызова EapHostPeerInvokeInteractiveUI.

    Примечание

    Если возвращается EAP_E_EAPHOST_METHOD_OPERATION_NOT_SUPPORTED , запрашивающий должен следовать традиционной модели вызова интерактивного пользовательского интерфейса метода путем вызова EapHostPeerInvokeInteractiveUI. При возникновении ошибки EapHostPeerQueryInteractiveUIInputFields вернет код возврата, отличный от NULL.

     

  4. Независимо от того, вызывает ли запрашивающий элемент EapHostPeerQueryInteractiveUIInputFields или EaphostPeerInvokeInteractiveUI , процесс пользовательского интерфейса передает существующие данные контекста и загружает Eappcfg.dll. Для сбора новых данных создается соответствующий пользовательский интерфейс. Копируются новые данные контекста пользовательского интерфейса, которые теперь могут содержать введенные пользователем данные, а старые контекстные данные освобождаются с помощью вызова EapPeerFreeMemory.

  5. Процесс пользовательского интерфейса возвращает новые данные контекста запрашиваемому объекту, который вызывает EapHostPeerSetUIContext , чтобы задать его.

Последовательность вызовов API однорангового метода

Последовательность вызовов API метода Authenticator

Последовательность вызовов EAPHost

EAPHost Supplicants