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
Все права защищены. Цитирование только с согласия автора.