Здравствуйте.
Проблема возникла...
Есть 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 очень не хочу.
Помогите пожалуйста.
Что сделать можно?
Я так монял есть большое желание потрахаться с защитой без домен? Это даже интересно...
А хоть одна из машин к какому нибудь домену подключена (не обязательно к 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 тоже работает.
Спасибо за помощь!
Добшиков Антон.
Здравствуйте Аноним, Вы писали:
А>Домен у заказчика я сделать не могу. Этож все компьютеры, использующие пакет должны быть в одном домене? Это невозможно...
Идеальный случай... Можно в разных, но тогда домены должны быть связаны доверительными отношениями. На худой конец чтобы машины небыли подключены к доменам вовсе.
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, то все заработает.
Ну я поколдовал. Для своего приложения.
Изменял уровни авторизации и олицетворения.
Сообщения меняются от "Доступ запрещен (при этом на сервере в журнале есть сообщения об ошибке)" на "Сервер не загружен (журнал чист)".
То есть — логинится, но сервера не видит...
С уважением, Добшиков Антон.
Здравствуйте Аноним, Вы писали:
А>Здравствуйте 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, то все заработает. А>Ну я поколдовал. Для своего приложения. А>Изменял уровни авторизации и олицетворения. А>Сообщения меняются от "Доступ запрещен (при этом на сервере в журнале есть сообщения об ошибке)" на "Сервер не загружен (журнал чист)". А>То есть — логинится, но сервера не видит... А>С уважением, Добшиков Антон.
Так задай права... Ну, как я выше говорил.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.