dcom w2ks
От: Добшиков Антон Евгеньевич  
Дата: 20.02.02 13:59
Оценка:
Здравствуйте.
Проблема возникла...
Есть DCOM сервер и его клиент
Есть w2ks +Terminal Services и w2kprof
1. Запускаю сервер на w2ks, клиент на w2kprof — не работает. клиент сервер видит, но ничего с ним сделать не может. если сервер не запущен, клиент его запускает на w2ks.
2. Запускаю сервер на w2kprof, клиент на w2ks — все работает.
3. Запускаю сервер в 1 терм. сессии w2ks, а клиент в другой w2ks — аналогично п1.
4. Запускаю сервер и клиент в 1 терм. сессии w2ks — все работает.
Имена пользователей и пароли везде одинаковые
Все установки dcom по умолчанию (dcomcnfg)
Сервер — Factorysoft Modbus Explorer
Клиент — Factorysoft OPC Client
Но это не важно и не он нужен (средств для отладки и экспериментов больше) — другие приложения по dcom тоже не общаются.
Необходимо оживить именно первый пункт.
Читал у микрософта — говорят либо домен, либо одинаковые имена/пароли. Правда все про NT, конкретно про 2000 нет. Ставить AD очень не хочу.
Помогите пожалуйста.
Что сделать можно?
Re: dcom w2ks
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.02.02 20:10
Оценка:
Здравствуйте Добшиков Антон Евгеньевич.

Скорее всего проблемы как всегда в защите.

Я так монял есть большое желание потрахаться с защитой без домен? Это даже интересно...

А хоть одна из машин к какому нибудь домену подключена (не обязательно к W2k)?

В любом случае здесь ftp://ftp.optim.ru/pub/Tests/ComSec/ лежат примеры к моей статье выходящей в RSDN Mag. Зарегистрируй модули примера ComSec на сервере и клиенте и посмотри на диагноситические сообщения. Лучше всего смотреть на это дело из под отладчика (причем как на клиенте, так и на сервере). А еще лучше подписывайся на журнал и читай статью.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: dcom w2ks
От: Аноним  
Дата: 26.02.02 10:49
Оценка:
Здравствуйте VladD2, Вы писали:
VD>Я так монял есть большое желание потрахаться с защитой без домен? ;) Это даже интересно...
Есть пакет(TraceMode), который для связи между своими компонентами использует DCOM. Писал это не я... Он куплен. Работа под w2k server разработчиками не проверялась...
Домен у заказчика я сделать не могу. Этож все компьютеры, использующие пакет должны быть в одном домене? Это невозможно...
VD>А хоть одна из машин к какому нибудь домену подключена (не обязательно к W2k)?
Нет.
VD>В любом случае здесь ftp://ftp.optim.ru/pub/Tests/ComSec/ лежат примеры к моей статье выходящей в RSDN Mag. Зарегистрируй модули примера ComSec на сервере и клиенте и посмотри на диагноситические сообщения.
Посмотрел, зарегистрировал.
При запуске SecTest и нажатии "Call secure method".
На сервере (w2ks) говорит Отказано в доступе.
Пробовал на клиенте (w2kprof) — то-же самое...
VD> Лучше всего смотреть на это дело из под отладчика.
Я в C не очень силен... Неужели все так сложно! Под NT4 сервер все работает. Под w2k prof тоже работает.
Спасибо за помощь!
Добшиков Антон.
Re[3]: dcom w2ks
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.02.02 00:07
Оценка:
Здравствуйте Аноним, Вы писали:

А>Домен у заказчика я сделать не могу. Этож все компьютеры, использующие пакет должны быть в одном домене? Это невозможно...

Идеальный случай... Можно в разных, но тогда домены должны быть связаны доверительными отношениями. На худой конец чтобы машины небыли подключены к доменам вовсе.

VD>>А хоть одна из машин к какому нибудь домену подключена (не обязательно к W2k)?

А>Нет.

Тогда все не так плохо. :) Нужно завести на каждой машине (и на сервере и на клиенте). Одинаковые учетные записи. Полностью одинаковые! Чтобы и имена и пароли сходились да бита! Тогда NT будет принимать этих пользователей как единого.

VD>>В любом случае здесь ftp://ftp.optim.ru/pub/Tests/ComSec/ лежат примеры к моей статье выходящей в RSDN Mag. Зарегистрируй модули примера ComSec на сервере и клиенте и посмотри на диагноситические сообщения.

А>Посмотрел, зарегистрировал.
А>При запуске SecTest и нажатии "Call secure method".
А>На сервере (w2ks) говорит Отказано в доступе.
А>Пробовал на клиенте (w2kprof) — то-же самое...

Ты msi-ку установил или саму DLL зарегистрировал? Устанавливать нужно именно ее. Далее нужно открыть снэп-ин Component Services, найти приложение ComSec и открыть его свойства. Теперь нужно перейти на закладку Security, выключить (если он включен) бекбокс "Enforce access checks for this application" и переключить "Security level" в "Perform access checks only at the &process level.
Security property will not be included on the object context. COM+ security call context will not be available.". Это будут настройки как у обычного DCOM-приложения.

Теперь в выпадающем списке "Authentication level for calls" выбери "None", а в " Impersonation level" Anonymous. Это позволит выставлять на клиенте любые уровни этих параметров.

Теперь переключись на закладку Identity и выбери пункт " Interactive user". При этом ты должен быть залогинен под учетной записью у которой достаточно прав (лучше под локальным администратором).

Теперь попытайся открыть SecTest (локально) и нажать на кнопку. Должно заработать. Если не заработало, то открой в том же снэп-ине свойства ветки "My Computer" и перейди на закладку "Defaulte Properties. Убедись, что включен чекбокс "Enable Distributed COM on this computer".

Далее перейди к закладке "Default Security" и проверь, что для твоей записи даны права как на активацию, так и на доступ. Теперь запуститься должно обязательно. Если это не так пиши какой результат...

Если все заработало, нужно сделать прокси. Выдели ветку приложения, открой контекстное меню и выбери Export. Далее в визарде выбери создание Proxy и у тебя будет инсталлятор. Проинсталлируй его на клиенте и попытайся запустить SecTest (там же). Должно заработать. Если не заработало... Останови COM+-приложение (Shutdown из контекстного меню) и растрой в Windows звук на запуск приложения. Теперь снова запусти клиента (удаленно) и нажми кнопку. Если звук есть (на сервере), значит проблема с правами доступа... иди проверяй еще раз права доступа по умолчанию. Если нет, то нужно проверять права активации.

Не забудь, что на сервере нужно дать доступ локальной учетной записи точь-в-точь соответствующей такой же на клиентском компьютере. А на клиентский компьютер входить именно под ней. Причем обе машины должны быть залогинены локально (не в домен)!

PS

Честно говоря COM+-совское приложение здесь не совсем кстати. Там где я тебе показал, лежит еще и DCOM-приложение (exe-сервер и клиент). Можешь попробовать поэкспериментировать с ним и dcomcnfg.exe.

VD>> Лучше всего смотреть на это дело из под отладчика.

А>Я в C не очень силен... Неужели все так сложно! Под NT4 сервер все работает. Под w2k prof тоже работает.

Я думаю, что если поколдовать с dcomcnfg.exe, то все заработает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: dcom w2ks
От: Аноним  
Дата: 27.02.02 10:04
Оценка:
Здравствуйте VladD2, Вы писали:


VD>Тогда все не так плохо. :) Нужно завести на каждой машине (и на сервере и на клиенте). Одинаковые учетные записи. Полностью одинаковые! Чтобы и имена и пароли сходились да бита! Тогда NT будет принимать этих пользователей как единого.

Ну млин. И логиниться одинаково... Застрелиться. Как это заказчику обьяснять? Что-же это за протокол такой??? И нафига разработчики его используют?
VD>Ты msi-ку установил или саму DLL зарегистрировал? Устанавливать нужно именно ее.
<cut>
VD>Теперь попытайся открыть SecTest (локально) и нажать на кнопку.
Таакс, на w2kprof это все сработало, а вот на w2k server приложения ComSec в оснастке "Службы клмпонентов" нет.
Регистрировал так regsvr32 ComSec.dll.
Сказала что все успешно...
Кстати приложения, от которого мне нужно добиться работы в этой оснастке ни на w2kprof, ни на w2ks нет. Зато оно есть в списке приложений dcomcnfg...
Может мне действительно что-то про dcom надо...
Я не нашел примеров на ftp. Можно подробнее?
VD>Я думаю, что если поколдовать с dcomcnfg.exe, то все заработает.
Ну я поколдовал. Для своего приложения.
Изменял уровни авторизации и олицетворения.
Сообщения меняются от "Доступ запрещен (при этом на сервере в журнале есть сообщения об ошибке)" на "Сервер не загружен (журнал чист)".
То есть — логинится, но сервера не видит...
С уважением, Добшиков Антон.
Re[5]: dcom w2ks
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.02.02 22:01
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте VladD2, Вы писали:



А>Ну млин. И логиниться одинаково... Застрелиться. Как это заказчику обьяснять? Что-же это за протокол такой??? И нафига разработчики его используют?


Не, ты меня не так понял. Это для упрощения, но логин для которого прописаны разнешения (локальный) и лагин который лезет должны бить идентичными.

VD>>Теперь попытайся открыть SecTest (локально) и нажать на кнопку.

А>Таакс, на w2kprof это все сработало, а вот на w2k server приложения ComSec в оснастке "Службы клмпонентов" нет.
А>Регистрировал так regsvr32 ComSec.dll.
А>Сказала что все успешно...

Я же сказал... msi-ку нужно запустить.
А так ты просто локальный сервер зарегистрировал.

А>Кстати приложения, от которого мне нужно добиться работы в этой оснастке ни на w2kprof, ни на w2ks нет. Зато оно есть в списке приложений dcomcnfg...


Ну, так оно же не COM+, просто DCOM.

А>Может мне действительно что-то про dcom надо...


Скорее всего тебе нужно с dcomcnfg по-возиться. COM+-ное приложение я тебе дал потому что оно диагностику хорошую дает. (Может и зря... только запутал...)

А>Я не нашел примеров на ftp. Можно подробнее?


Нда... Немного поподробнее у меня в журнале заняло ~20 страниц мелким шрифтом.

Короче выставь (в тестовых целях) в дком dcomcnfg фул эксэс для эвривана (в обоиш номинациях). Можно попробывать сделать это же и в дефолтных настрйках (Причем, как для сервера, так и для клиента!).

Вообще желательно запустить COM+-ное приложение (черт хоть такое же, но DCOM-ное делай ) на сервере. Это даст тебе большее понимание того, что присходит.

Все модули лежат здесь ftp://ftp.optim.ru/pub/Tests/ComSec/ComSecModules.zip
Исходнике в той же директории.

VD>>Я думаю, что если поколдовать с dcomcnfg.exe, то все заработает.

А>Ну я поколдовал. Для своего приложения.
А>Изменял уровни авторизации и олицетворения.
А>Сообщения меняются от "Доступ запрещен (при этом на сервере в журнале есть сообщения об ошибке)" на "Сервер не загружен (журнал чист)".
А>То есть — логинится, но сервера не видит...
А>С уважением, Добшиков Антон.

Так задай права... Ну, как я выше говорил.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.