Идентификация и аутентификация (ИА) в ОС Windows

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

Механизм ИА пользователя в ОС Windows NT реализуется специальным процессом Winlogon, который активизируется на начальном этапе загрузки ОС и остается активным на протяжении всего периода ее функционирования. Ядро ОС регулярно проверяет состояние данного процесса и в случае его аварийного завершения происходит аварийное завершение работы всей ОС. Помимо аутентификации пользователя Winlogon реализует целый ряд других функций, таких как переключение рабочих полей (desktop), активизация хранителей экрана, а также ряд сетевых функций.

Процесс Winlogon состоит из следующих модулей:

  • - ядро процесса Winlogon. ехе;
  • - библиотека GINA: (Graphic Identification and Autentication — графическая библиотека идентификации и аутентификации); динамическая библиотека функций, используемых для «локальной» идентификации пользователя (идентификации пользователя на рабочей станции);
  • - библиотеки сетевой поддержки (Network Provider DLLs), реализующие «удаленную» идентификацию пользователей (идентификацию пользователей, обращающихся к ресурсам сервера через Сеть).

Библиотека GINA и библиотеки сетевой поддержки являются заменяемыми компонентами процесса Winlogon. Конфигурация библиотек сетевой поддержки определяется протоколами и видами сервиса поддерживаемой сети. При этом конфигурация библиотеки GINA определяется требованиями к механизму локальной идентификации.

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

Когда пользователь еще не вошел в систему, Winlogon находится в состоянии 1, пользователю предлагается идентифицировать себя и предоставить подтверждающую информацию (в стандартной конфигурации — пароль). Если информация, введенная пользователем, дает ему право входа в систему, активизируется оболочка системы (как правило, Program Manager) и Winlogon переключается в состояние 2.

Хотя в состоянии 1 ни один пользователь не может непосредственно взаимодействовать с системой, если на рабочей станции запущен Server Service, пользователи могут обращаться к ресурсам системы через сеть.

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

Функциональная схема диспетчера доступа 1 — пользователь не вошел в систему; 2 — пользователь вошел в систему; 3 — рабочая станция заблокирована

Рис. 3.2. Функциональная схема диспетчера доступа 1 — пользователь не вошел в систему; 2 — пользователь вошел в систему; 3 — рабочая станция заблокирована

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

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

Сразу после загрузки Winlogon инициализирует GINA, вызывая последовательно ее функции WlxNegotiate и Wlxlnitialize. Рабочая станция переходит в состояние «Пользователь не вошел в систему».

Когда пользователь собирается войти в систему с помощью комбинации клавиш Ctrl-Alt-Del, Winlogon вызывает функцию WlxLoggedOutSas библиотеки GINA. WlxLoggedOutSas осуществляет попытку входа в систему, вызывая системную функцию LogonUser. В зависимости от информации, введенной пользователем, GINA возвращает процессу Winlogon одно из следующих значений.

WLXSASACTIONLOGON — пользователь вошел в систему. Получив это значение, Winlogon вызывает функцию WlxActivateUserShell библиотеки GINA, которая загружает индивидуальную оболочку пользователя.

WLXSASACTIONNONE — пользователь не смог войти в систему. Состояние системы не изменяется.

WLX SAS ACTION SHUTDOWN — пользователь потребовал завершить работу системы. Эта возможность может быть отключена (см. выше). Получив данное возвращаемое значение, Winlogon последовательно вызывает функции библиотеки GINA WlxLogoff и WlxShutdown.

Если пользователь нажал комбинацию Ctrl-Alt-Del, уже войдя в систему, Winlogon вызывает функцию WlxLoggedOnSas. GINA выводит на экран диалоговое окно и в зависимости от решения пользователя выполняет следующие действия:

  • - если пользователь решил не предпринимать никаких действий, GINA возвращает в Winlogon значение WLXSASACTIONNONE. Winlogon возвращает систему в то же состояние, в котором она была до нажатия комбинации Ctrl-Alt-Del;
  • - если пользователь желает просмотреть список активных процессов, GINA возвращает значение WLXSASACTIONTASKLIST. Winlogon возвращает систему в состояние, в котором она была до нажатия комбинации Ctrl-Alt-Del и активизирует процесс Task Manager;
  • - если пользователь желает заблокировать рабочую станцию, GINA возвращает значение WLX_SAS_ACTION_LOCK_WKSTA. Winlogon блокирует систему;
  • - если пользователь желает выйти из системы, GINA возвращает значение WLXSASACTIONLOGOFF. Winlogon в ответ вызывает функцию GINA WlxLogoff;
  • - если пользователь желает завершить работу с компьютером,

GINA возвращает значение WLX_SAS_ACTION_SHUTDOWN. Winlogon последовательно вызывает функции GINA WlxLogoff

и WlxShutdown.;

- если пользователь желает перезагрузить компьютер, GINA возвращает значение WLX_SAS_ACTION_SHUTDOWN_REBOOT. Winlogon последовательно вызывает функции GINA WlxLogoff

и WlxShutdown. По окончании выгрузки системы компьютер автоматически перезагружается;

- если пользователь желает закончить работу с компьютером и

выключить его, GINA возвращает значение

WLX_SAS_ACTION_SHUTDOWN_ REBO-OTPOWEROFF. Winlogon последовательно вызывает функции GINA WlxLogoff и WlxShutdown. По окончании выгрузки системы компьютер автоматически выключается. Если аппаратная часть компьютера не допускает программного отключения питания, данное возвращаемое значение имеет тот же эффект, что и WLX SAS ACTION SHUTDOWN;

- если пользователь желает изменить свой пароль, GINA выводит

на экран соответствующее диалоговое окно, по окончании ввода пользователем нового пароля вызывает функцию WlxChangePasswordNotify и затем возвращает в Winlogon значение

W LX_S ASACTIONP WDCH AN GED.

Когда рабочая станция заблокирована, а пользователь нажал комбинацию Ctrl-Alt-Del, Winlogon вызывает функцию GINA

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

  • - WLXUNLOCKWKSTA — разблокировать рабочую станцию;
  • - WLX_FORCE_LOGOFF — принудительный выход из системы с последующим входом в систему администратора;
  • - WLX NO ACTION- рабочая станция остается заблокированной.

Если пользователь вошел в систему и один из процессов вызывает системную функцию ExitWindowsEx, Winlogon в зависимости от параметров ExitWindowsEx вызывает либо WlxLogoff, либо последовательно WlxLogoff и WlxShutdown. При этом, соответственно, либо пользователь выходит из системы, либо система завершает работу.

Если GINA получает от пользователя нестандартную SAS, она вызывает функцию Winlogon WlxSasNotify, после чего Winlogon вызывает одну из вышеперечисленных функций GINA в зависимости от контекста, в котором была получена SAS.

Для изучения процесса идентификации и аутентификации можно использовать приводимый ниже модуль DLL, который является «переходником» между WinLogon и стандартной MSGINA. Прототипы экспортируемых MSGINA.DLL описаны в файле winwlx.h стандартной поставки MS SDK.

Для активизации модуля xgina.dll необходимо создать ключ реестра (например, при помощи Regini с использованием следующего ini файла):

RegistryMachineSoftwareMicrosoftWindows

NTCurrentVersionWinlogon

GinaDll = c:xgina.dll

Вместо c:xgina.dll необходимо указать реальный путь, либо поместить библиотеку по заданному пути.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >