Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Имперсонификация в трёхзвенном приложении (DCOM+ADO) [Delphi, Windows]


Un Copolly ©   (2007-03-03 18:49:00) 

Добрый день! Возник такой вопрос, буду рад любой помощи. Пишется трёхзвенное приложение Клиенты--->DCOM--->Сервер1--->ADO--->MS SQL. Необходимо понять механизм персонификации пользователя на Сервере1 с помощью функции CoImpersonateClient (или как-нибудь ещё, главное, чтобы Сервер1 обращался к серверу БД от имени вызывающего клиента). Упростим ситуацию, допустим, на Сервере1 есть RemoteDataModule с ADOConnection, ADOTable и DataSetProvider, обращающиеся к базе данных, а на клиентах - DCOMConnection и ClientDataSet. Весь код сгенерирован автоматически, приложения пустые, идёт просто проверка такого подключения. Что нужно дописать на Сервере1, чтобы он подключался к базе данных от имени и с правами подключившегося к нему клиента? Гугль и хелп мне ничего не дали, по CoImpersonateClient в Delphi ничего нет. Ну или криво глядел, спасибо всем заранее!


Dok_3D   (2007-03-07 10:07:00) [1]

2 Un Copolly   (03.03.07 18:49)

Если твой "Сервер1" не exe, то в коде править нужно.

Все просто:

CoImpersonateClient;  // поворачиваем поток от уч. записи клиента
ADOConnection.Open; // подключаемся к БД
CoRevertToSelf;         // возвращаем поток обратно к уч. записи клиента


Да, ну и конечно нужно на клинтской стороне выставить, уровень олицеворения по умолчанию Олицеворение или Представитель. Либо выставлять это дело программно в клиенских приложениях(через CoInitializaSecurity).


Ломброзо   (2007-03-04 17:55:00) [2]

В коде править ничего не надо, а DCOM-сервер на запуск или активацию с привилегиями вызывающей стороны настраивается в dcom config (панель управления-администрирование->Component Services)


Наверх

Титульная страница Поиск, карта сайта Написать письмо