Делегированная аутентификация и Лоцман API

Автор VladGen, 15.08.12, 08:08:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

VladGen

Здравствуйте.

На заводе, где я работаю программистом, есть доменная сеть с доменом Loodsman в которой:
LoodsmanServer - сервер приложений с "Лоцман",
ServiceServer - сервер, на котором запускается сетевая служба (сервис LoodsmanService написан на WPF), которая от имени захардкоденного пользователя домена создает удаленный COM объект API Лоцмана на сервере приложений, а так же клиентские компьютеры домена, на которых запускается клиентская часть сервиса.

LoodsmanService имперсонирует пользователя с помощью LogonUser (так же пытался с CoInitializeSecurity и вместе и раздельно).
Но каким-то причинам персонализация не происходит и IMainSystem.CurrentUser
возвращает не имя пользователя, а имя компьютера на котором запускается сервис.
Не могли бы подсказать, как решить эту проблему.

YorikER

Мне стыдно признаться, но я не знаю, что такое WPF... и плохо понятно, что такое "захардкоденный" пользователь... Прокомментируйте пожалуйста...
Из прочитанного я понял следующее. Вы пытаетесь создать не трехзвенную сетевую систему (Клиент -> Сервер приложений Лоцмана -> Сервер БД), а свою четырехзвенку на базе ЛОЦМАН:PLM (Клиент -> LoodsmanService -> Сервер приложений Лоцмана -> Сервер БД). Таким образом пытаетесь рационализировать количество необходимых лицензий. Группа клиентов должна работать через LoodsmanService от имени одного зарегистрированного в ЛОЦМАН:PLM пользователя, олицетворяющего указанную группу. Что-то подобное мы делали, используя технологию DataSnap в Delphi. Возникали проблемы с идентификацией авторов-создателей объектов Лоцмана. Проще оказалось пойти другим путем. Ограничить время подключения к серверу приложений временем выполнения операции с системой, после чего клиентское приложение освобождало лицензию до следующего обращения к СП. Таким образом при официальном количестве лицензий порядка 10 шт, в системе работало до 50...100 клиентов одновременно. Причем без нарушения авторских прав АСКОНа.

Chaa

Не совсем понятно, что вы делаете. С одной стороны вы "от имени захардкоденного пользователя домена создает удаленный COM объект API Лоцмана", с другой пытаетесь имперсонировать пользователя и получить его в IMainSystem.CurrentUser.
Если ваш сервис должен работать с СП Лоцмана от имени одного пользователя, то никаких проблем быть не должно.
Если нужна такая схема, когда пользователь подключается к вашему сервису, сервис делегирует пользователя к СП Лоцмана, а СП делегирует права к БД, то такая схема работать будет только если и СП, и БД Лоцмана находятся на одном компьютере, иначе делегирование через два промежуточных узла работать не будет.

YorikER

Цитата: Chaa от 16.08.12, 06:37:33
Если нужна такая схема, когда пользователь подключается к вашему сервису, сервис делегирует пользователя к СП Лоцмана, а СП делегирует права к БД, то такая схема работать будет только если и СП, и БД Лоцмана находятся на одном компьютере, иначе делегирование через два промежуточных узла работать не будет.
Мне почему-то кажется, что не обязательно СП и БД должны находиться на одном компьютере, Мы вроде пробовали разнесенную четырехзвенку и никаких проблем с аутентификацией пользователей не было. Особенно при SQL аутентификации...

YorikER

Расскажу о своем личном опыте общения с ЛОЦМАНом на прежней работе. Сеть с доменом с выходом в Интернет через роутер со стационарным адресом в сети Интернета. На отдельном копьютере сервер SQL. На отдельном компьютере сервер приложений (их было несколько в домене). На одном из них был установлен сокет-сервер с открытым портом для доступа к СП. На роутере был организован проброс порта извне (из Интернета) на компьютер с СП и сокет-сервером. Находясь вне доменной сети (дома, в командировках, в отпусках ...) и имея доступ к Интернету, я спокойно доступался до ЛОЦМАНа через открытый порт роутера, используя SQL идентификацию. Стандартный ЛОЦМАН-Клиент спокойно отрабатывал сокет-соединение через указанный порт роутера, и я в онлайн режиме мог контролировать выполнение проектных работ конструкторского отдела. Единственная проблема была с удаленным доступом к файлам. Учитывая то, что мы уже давно работали с ЛОЦМАНом через собственного клиента, в нем был написан собственный прямой метод передачи файлов на удаленный компьютер с использованием открытых методов СП ЛОЦМАНа. Впоследствии на моем копьютере был установлен написанный локальный DataSnap сервер в виде Windows сервиса, который соединялся с удаленным сокет сервером по IP адресу и порту, подключался к БД ЛОЦМАНа через SQL аутентификацию. На компьютере было установлено несколько DataSnap клиентских приложений (каждое для своих задач), которые работали через указанный DataSnap сервис от имени одного пользователя, при этом для каждого клиентского приложения DataSnap сервис открывал свой поток, но методы СП отрабатывал через ядро сервиса. Это был довольно сложный, но интересный заплыв в область многозвенного программирования... Могу похвастаться, что находясь в Пекине (КНР) в командировке в отеле, используя доступ к Интернету, мне удалось подключиться к ЛОЦМАНу и оперативно собрать материалы для презентации, которая состоялась на следующий день. Скорость общения с БД оставляла желать лучшего, но не возить же с собой электронный архив целого предприятия. К сожалению я ушел с данного предприятия и продемонстрировать всю эту цепочку сейчас уже не могу...

YorikER

В дополнение к предыдущему... С сокет-сервером действительно были какие-то проблемы с аутентификацией... И я в конце концов заменил его на DataSnap сервер в качестве оснастки над СП ЛОЦМАНа. Тем более, что работать при удаленном доступе через Интернет чисто методами СП ЛОЦМАНа не очень удобно. Пришлось написать несколько своих макро методов... В принципе для желающих можнл продемонстрировать работу с ЛОЦМАН:PLM через удаленный доступ в Интернете...

Алхимик

Цитата: YorikER от 16.08.12, 08:32:29
В принципе для желающих можнл продемонстрировать работу с ЛОЦМАН:PLM через удаленный доступ в Интернете...
В ЛОЦМАН не приходилось работать, но вы меня заинтреговали) Конечно хотим посмотреть :shu:

YorikER

Тогда для начала несколько комментариев... Ко мне обратились мои бывшие коллеги, которые также как и я покинули мое бывшее предприятие и организовали инжиниринговую фирму, ведущую проектные разработки в области химического машиностроения. Фирма занимается проектированием, размещением изготовления оборудования на российских машиностроительных предприятиях, авторским надзором и пусконаладкой своего оборудования у Заказчиков. Обсуждаемая задача - создание единого дата-центра на базе какой-нибудь PDM системы с удаленным доступом через Интернет для организации проектных работ по аутсорсингу. Кроме этого география поставок и монтажей довольно широка, необходим онлайн режим управления текущими проектными разработками. Практически обсуждается идея создания виртуального конструкторского подразделения в Интернете с единым дата-центром.

Chaa

Цитата: YorikER от 16.08.12, 07:38:49
Мы вроде пробовали разнесенную четырехзвенку и никаких проблем с аутентификацией пользователей не было. Особенно при SQL аутентификации...
Да, с SQL аутентификацией все будет работать при любом количестве звеньев.
Но при Windows аутентификации делегирование через два промежуточных узла не работает. Хотя возможно это было давно, и в новых версиях Windows это уже можно реализовать.

YorikER

В качестве ядра PDM-системы я предложил использовать ядро ЛОЦМАН:PLM. Пока с руководством АСКОНа данная тема не обсуждалась, т.к. до реального воплощения еще не дошли (хотя уже находимся в довольно-таки серьезной стадии). Для отработки удаленного доступа через Интернет на сегодняшний момент на одном из хостингов России открыт вируальный сервер (VDS), на котором установлен SQL сервер (MSDE), установлено ядро сервера приложений ЛОЦМАНа (одна из очень старых версий COM объекта, потерявшая на сегодня свою актуальность). Кроме этого на сервере установлен написанный на Delphi DataSnap сервер в виде Windows сервиса, который (багодаря некоторым шаманским действиям) представляет собой оснастку над СП ЛОЦМАНа и в паре с ним представляет DataSnap клиентам необходимые для текущей работы методы СП ЛОЦМАНа. Кроме базовых методов СП в DataSnap сервере написано несколько макро-методов для ускорения работы через удаленный доступ. Для доступа используется IP-адрес и номер порта 11211. Используется только SQL аутентификация. Указанная выше связка приложений используется только для разработки средств удаленного доступа и демонстрационных целей.

YorikER

На ядре ЛОЦМАНа сконфигурирована БД для PDM системы, которая отличается от базовой поставки АСКОНа (хотя и сделана на ее основе). В настоящий момент разрабатывается клиентское приложение для указанной системы для работы в удаленном доступе через Интернет. Идеология системы неоднократно обсуждалась на форуме... Первична СУБД, CAD вторичен. Конструктор сразу же работает с СУБД и состав изделия формирует в клиентском приложении, в котором разработан редактор коснтрукторской спецификации. Спецификация КОМПАСа используется только как отчет для распечатки. Справочник материалов и сортаментов, а также стандартных изделий разработаны на платформе этой же СУБД ЛОЦМАНа в виде объектов системы и сконфигурированы на базе классификатора ОКП. Если у руководства АСКОНа не будет возражений, я готов (в демонстрационных целях возможностей системы ЛОЦМАН:PLM) зарегистрировать в системе специального пользователя, у которого будет доступ ко всем объектам только для чтения, и скомпилировать текущее состояние клиентского приложения с зашитыми в коде IP адресом дата-центра, номером порта, логином и паролем пользователя и выставить указанное приложение у себя на сайте. Но для этого мне понадобится какое-то время... О готовности сообщу немного позже.

YorikER

Для тех кто интересуется удаленным доступом через Интернет к ЛОЦМАНу - следите за страницей www.infnt.ru/CloudPDM/CloudPDM1.html, еще несколько небольших тестов и я выставлю демонстрационный пример удаленного клиентского приложения...
Для Администратора: может есть смысл перенести дискуссию в новый топик... Что-то типа "Облачная PDM"?

YorikER

Для желающих попробовать поработать с ЛОЦМАН:PLM в Интернете на странице http://www.infnt.ru/CloudPDM/CloudPDM4.html выставлена демонстрационная версия клиентского приложения.
Основные требования и ограничения:

  • Приложение использует зашитый в программе IP-адрес удаленого DataSnap сервера. Номер порта, по которому идет обмен информации - 11211. Система безопасности компьютера (брандмауэр, антивирус, локальная система безопасности) должна разрешать установленному приложению выход в Интернет по указанному порту. Если работа ведется в корпоративной сети через роутер, на нем должен быть открыт указанный порт для прохождения пакетов информации в обе стороны. В случае необходимости обратитесь к Администратору сети. Если работа ведется в домашних условиях через бытовой роутер, на нем, как правило все порты открыты по-умолчанию.
  • Приложение скомпоновано в Windows 7 и тестировалось в этой же операционной системе и WinXP
  • В приложении используется файловый обмен документов КОМПАС-3D версии не ниже V13.
  • Приложение работает от имени зарегистрированного в системе ЛОЦМАН:PLM пользователя WLUser, у которого уровень доступа ко всем объектам базы данных - "только для чтения". Файлы документы также будут загружаться на компьютер удаленного клиента "только для чтения". Ряд сервисов, предназначенных для редактирования атрибутов и свойств объектов базы данных, будут также отключены для указанного выше пользователя.
Будут вопросы, комментарии и критика - пишите. ОГРОМНАЯ ПРОСЬБА - НЕ ЗАНИМАТЬСЯ БАНАЛЬНЫМ ХАКЕРСТВОМ! Все таки идет разработка...