IntraWeb. Аутентификация.

 

 

Abstract. Article deals with IntraWeb authentication. User List and IWServerController. OnAuthRequest event handler are described.

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Изображенный выше диалог появляется  на экране всякий раз, когда пользователь запрашивает главную страницу сайта (или main-форму IntraWeb-приложения), при условии, что список пользователей сервера не пустой. Вызовите на экран список AuthList для котроллера сервера IWServerController. Заполните его парами UserName=Password. Теперь доступ к ресурсам приложения будет разрешен только для пользователей, верно указавших своё имя и пароль из этого списка.

Имя пользователя и пароль при вводе чувствительны к регистру. Имейте это ввиду при заполнении списка AuthList.

 

Если пользователь не опознан, сервер продолжает процесс поиска. Вырабатывается событие OnAuthRequest:

 

procedure TIWServerController.IWServerControllerBaseAuthRequest(

  const AUserName, APassword: String;

  var AValid: Boolean);

 

После обработки в AUserName и APassword серверу может быть возвращено значение AValid, содержащее TRUE, если пользователь опознан и FALSE в обратном случае. Если процесс аутентификации завершен благополучно, переменной AuthUser присваивается имя пользователя, которое в дальнейшем может быть использовано в приложении.

Очевидно, что заполнение списка пользователей в Design-time снижает гибкость приложения. Более эффективен динамический метод хранения значений UserName=Password в базе данных или во внешнем файле. Например, если пользователь прошел процедуру регистрации в OnAuthRequest, его можно добавить в список AuthList. Сам список, являясь экземпляром TStrings, может быть сохранен или считан методами SaveToFile или ReadFromFile при обработке событий OnDestroy и OnCreate соответственно.

При неудачной попытке зайти на сайт пользователю отправляется страница с текстом "401 Unauthorized". К сожалению, в версии 5.0 изменить вид этой страницы невозможно.

IP-адрес клиентской машины, хранящийся в WebApplication.IP, может быть преобразован в NetBIOS-имя и сохранен в списке AuthList. Для этой цели можно использовать утилиту Windows 2000 под названием nbtstat.exe. Запустив ее с соответствующей командной строкой,  можно получить таблицу NetBIOS-имен, пример которой показан ниже:

 

Local Area Connection:

Node IpAddress: [10.51.8.81] Scope Id: []

NetBIOS Remote Machine Name Table

         Name               Type         Status   

 ---------------------------------------------

    MABANZA2000    <00>  UNIQUE      Registered

      MAC Address = 00-00-21-2C-69-EA

 

 

Эта таблица получена на тестовой машине путем запуска

 

C:\nbtstat -A 10.51.8.81 >t.txt

 

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

 

 

©Ренжиглов Николай (Nick Renzhiglov). http://mabanza.narod.ru  email:mabanza@yahoo.com

Все права защищены. Цитирование только с согласия автора.