Столкнулся с очень нехорошей проблемой, уже не знаю что делать.
Мне нужно в службе обращяться к базе данный Lotus через ODBC драйвер NotesSQL. Первым делом сделал тестовое десктоп приложение, которое практически сразу заработало. Создается коннекшн стринг, дальше сам коннекшн, получаю данные правильно.
Проблемы начались когда я начал заворачивать тот же самый код в веб сервис. Пришлось дать права на несколько папок группе IIS_WPG (как было написано в мануале самого дравера Лотуса), дать права на ветку реестра со списком установленных ODBC драйверов и т.д. Теперь нативных эксепшенов не вылетает, но драйвер так и не работает. Сам дравер не может подключиться к удаленному сереру. Пробовал запускать сервис от своего пользователя со всеми правами — то же самое.
Сделал вин сервис, перенес код туда, точно та же картина. При запуске от моего пользователя драйвер, запущенный сервисом, не может найти сервер в локалке.
После второго облома с сервисом, я подумал, что есть какие-то отличия прав десктоп приложения и сервисов (и вин и веб). Вот в этом и вопрос. Какие есть различия прав и как можно дать права, достаточные для полноценной работы драйвера? В мануале по самому драйверу больше никакой информации нет. Да и проблема, судя по всему, на моей стороне с правами.
Буду благодарен за любую помощь.
P.S. Сборка стронг нейм, подписанная. Должна быть фул траст.
Сравнивал Evidence АппДомена десктопа и службы, обе по умолчанию работают в зоне MyComputer, тобиш фул траст. Что еще можно посмотреть?
Здравствуйте, stump, Вы писали:
S>Скорее всего это проблема драйвера Лотуса. Какой способ аутентификации он использует, не Kerberos случаем?
Проблема именно в драйвере, он не может подключится к серверу. Пытаюсь раскопать могу ли я повлиять на условия в которых он запускается, чтоб он заработал. Из под десктопа работает, из под сервиса — нет.. Уже не знаю что еще можно сравнить из их жизненного цикла...
Драйвер мне самому жудко ненравиться, как и весь Лотус, но выбора у меня нет..
Насчет аутентификации точно не скажу, не нашел. Знаю, что у него все построено на .id файлах и паролях к ним. Чтоб залогиниться, нужно указать .id файл, логин и пароль.. Керберос это или нет не знаю..
Здравствуйте, HowardLovekraft, Вы писали:
HL>На стек можно глянуть?
Там нет ничего интересного.. Мне прилетает OdbcException с ошибкой, сгенерированной драйвером.. Драйвер там выдает собственную ошибку, как в случае если указываешь неверный сервер. Если б вылетало SecurityException или еще что-нить нативное, было бы намного проще..
Последнее что сделал перед уходом с работы — сделал библиотеку (dll с кодом, вызывающим NotesSQL ODBC Driver), подписал ее и закинул в ГАК. Сделал 2х клиентов, которые ссылаются на эту гаковскую библиотеку и дергают ее метод. 2 клиента — винформс, и вин сервис. Настройки подключения все одинаковые, и в этом тесте вшити хард-кодом в библиотеку. Вин формс прога открывает подключение, а в сервисе опять-таки не работает...
Этим я свел различия кода к минимуму. Теперь вся разница заключается только в стартовых\базовых настройках вин формс приложения и приложения windows service.
В чем же эта разница? Как ее посмотреть?
Re[2]: Особенности прав десктоп приложения и служб
Здравствуйте, -DIS-, Вы писали:
DIS>Последнее что сделал перед уходом с работы — сделал библиотеку (dll с кодом, вызывающим NotesSQL ODBC Driver), подписал ее и закинул в ГАК. Сделал 2х клиентов, которые ссылаются на эту гаковскую библиотеку и дергают ее метод. 2 клиента — винформс, и вин сервис. Настройки подключения все одинаковые, и в этом тесте вшити хард-кодом в библиотеку. Вин формс прога открывает подключение, а в сервисе опять-таки не работает... DIS>Этим я свел различия кода к минимуму. Теперь вся разница заключается только в стартовых\базовых настройках вин формс приложения и приложения windows service.
DIS>В чем же эта разница? Как ее посмотреть?
А сборка со строгим именем? И какая операционная система?
Re[3]: Особенности прав десктоп приложения и служб
Здравствуйте, arkhivania, Вы писали A>А сборка со строгим именем? И какая операционная система?
А торможу, раз в гак даже запихивали. Может смысл есть почитать про AllowPartiallyTrustedCallerAttribute
Re[2]: Особенности прав десктоп приложения и служб
Здравствуйте, -DIS-, Вы писали:
DIS>В чем же эта разница? Как ее посмотреть?
Сравни контекст безопасности в исполняемых приложениях. Для этого посмотри во время выплнения значения System.Threading.Thread.CurrentPrincipal.Identity и его свойств (Name, IsAuthenticated, AuthenticationType), а также System.Security.Principal.WindowsIdentity.GetCurrent()
Здравствуйте, -DIS-, Вы писали:
DIS>Этим я свел различия кода к минимуму. Теперь вся разница заключается только в стартовых\базовых настройках вин формс приложения и приложения windows service.
DIS>В чем же эта разница? Как ее посмотреть?
А не в профайле ли разница? Вообще, если сервису позволить работать с рабочим столом, что-нибудь меняется?
Также можно посмотреть, куда ваше приложение пытается обращаться, к каким файлам или веткам реестра.
Re[3]: Особенности прав десктоп приложения и служб
Здравствуйте, mrozov, Вы писали:
M>А не в профайле ли разница? Вообще, если сервису позволить работать с рабочим столом, что-нибудь меняется?
Пробовал при запуске от LocalSystem устанавливать галочку работы с рабочим столом, ничего не меняется. Запускаю от своего админского аккаунта, тоже без успеха.
M>Также можно посмотреть, куда ваше приложение пытается обращаться, к каким файлам или веткам реестра.
Файловую систему мониторил FileMon-ом, обращается к тем же файлам с тем же успехом. Реестр не мониторил, надо проверить.
Re[4]: Особенности прав десктоп приложения и служб
Здравствуйте, arkhivania, Вы писали:
A>Здравствуйте, arkhivania, Вы писали A>>А сборка со строгим именем? И какая операционная система? A>Может смысл есть почитать про AllowPartiallyTrustedCallerAttribute
Атрибут, к сожалению не помог.. Операционка Win2003 server enterprise SP2
Re[3]: Особенности прав десктоп приложения и служб
Здравствуйте, stump, Вы писали:
S>Здравствуйте, -DIS-, Вы писали:
DIS>>В чем же эта разница? Как ее посмотреть?
S>Сравни контекст безопасности в исполняемых приложениях. Для этого посмотри во время выплнения значения System.Threading.Thread.CurrentPrincipal.Identity и его свойств (Name, IsAuthenticated, AuthenticationType), а также System.Security.Principal.WindowsIdentity.GetCurrent()
Все параметры WindowsIdentity совпадают при вызовах вин сервиса и десктопа
Re[4]: Особенности прав десктоп приложения и служб
Здравствуйте, -DIS-, Вы писали:
DIS>Здравствуйте, stump, Вы писали:
S>>Здравствуйте, -DIS-, Вы писали:
DIS>>>В чем же эта разница? Как ее посмотреть?
S>>Сравни контекст безопасности в исполняемых приложениях. Для этого посмотри во время выплнения значения System.Threading.Thread.CurrentPrincipal.Identity и его свойств (Name, IsAuthenticated, AuthenticationType), а также System.Security.Principal.WindowsIdentity.GetCurrent()
DIS>Все параметры WindowsIdentity совпадают при вызовах вин сервиса и десктопа
И AuthenticationType тоже?
Здравствуйте, stump, Вы писали:
DIS>>Все параметры WindowsIdentity совпадают при вызовах вин сервиса и десктопа S>И AuthenticationType тоже?
При запуске службы от моего пользователя — да, от LocalSystem нет
обсуждалась проблема с IPC из под сервиса.
Там из-за logon type сервис (имеющий network logon type)некорректно работает с подгркжаемой dll, использующей named pipes (т.е. IPC)...
Может быть это чем-то поможет.
Re[2]: Особенности прав десктоп приложения и служб
обсуждалась проблема с IPC из под сервиса. PP>Там из-за logon type сервис (имеющий network logon type)некорректно работает с подгркжаемой dll, использующей named pipes (т.е. IPC)...
PP>Может быть это чем-то поможет.