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


Инициализация протокола проверки подлинности

Защищенное подключение EAP инициализируется между клиентом и сервером аналогичным образом для клиентов RAS и беспроводных (802.1X).

Клиент

Когда клиент пытается установить подключение, служба проверки подлинности получает сведения об удостоверениях для пользователя. Если значение RAS_EAP_VALUENAME_INVOKE_NAMEDLG присутствует в реестре для этого протокола проверки подлинности и это значение равно нулю, служба проверки подлинности вызывает RasEapGetIdentity. Обычно эта функция отображает пользовательский интерфейс, позволяющий удостоверению иметь тип, характерный для протокола проверки подлинности; например, сертификат или числовый идентификатор. Если RAS_EAP_VALUENAME_INVOKE_NAMEDLG отсутствует или задано одно, служба проверки подлинности отображает диалоговое окно "Стандартное имя пользователя системы".

После получения сведений об удостоверениях для пользователя служба проверки подлинности вызывает реализацию протокола проверки подлинности RasEapBegin. Этот вызов позволяет протоколу проверки подлинности выделить и инициализировать рабочий буфер, который служба передает при последующих вызовах RasEapMakeMessage и RasEapEnd. Рабочий буфер непрозрачн для службы и никогда не обращается к содержимому рабочего буфера. Если протокол проверки подлинности создает отдельный рабочий буфер для каждого сеанса EAP, рабочий буфер является сеансом и потокобезопасн. Так как протокол проверки подлинности выделяет память для рабочего буфера, протокол проверки подлинности также должен освободить эту память с помощью функции RasEapFreeMemory.

При вызове RasEapBeginслужба также передает PPP_EAP_INPUT структуру, содержащую указатели на сведения о конфигурации подключения, а также сведения об удостоверениях пользователя. Служба всегда передает значение для pszIdentity члена PPP_EAP_INPUT. Однако элемент pszPasswordPPP_EAP_INPUT может быть NULL.

В структуре PPP_EAP_INPUT элемент fAuthenticator указывает, вызывается ли протокол проверки подлинности (на клиенте) или в качестве средства проверки подлинности (на сервере).

Сервер

На сервере элемент bInitialIDPPP_EAP_INPUT указывает идентификатор, используемый сервером для первого пакета EAP. Сервер увеличивает этот идентификатор для последующих пакетов.

Кроме того, на сервере указатель pUserAttributes в PPP_EAP_INPUT указывает на массив атрибутов типа RAS_AUTH_ATTRIBUTE_TYPE. Это атрибуты для пользователя, полученного от клиента.

Если вызов RasEapBegin возвращает любое значение, отличное от NO_ERROR, сеанс отключен. Возвращенная ошибка регистрируется (на сервере) или отображается пользователю (на клиенте).