|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Реализация системы безопасности в ПО на основе AD |
|
Win32 API - Реализация системы безопасности в ПО на основе AD
|
Новый участник Сообщения: 45 |
Профиль | Отправить PM | Цитировать Здравствуйте, коллеги!
Вот стоит такая задача: в собственном ПО предусмотреть защиту некоторых функций на основе безопасности Windows (в частном случае используем Active Directory) Поясню. Есть комп-р включенный в домен с AD. Комп-р сугубо уникальный, на котором реализован автологон польз-ля USER (AD пользователь) и под этим польз-лем запускается некоторая самописаная программа. В программе реализована функция мониторинга некоторого процесса и изменения параметров работы некоторой установки. Нужно сделать так, чтобы при нажатии кнопки "Изменить параметр" программа запросила имя и пароль польз-ля (из AD или локального Windows) и если ему разрешено, то дает окно изменения. Если нет - то пинает его и продолжает работу в режиме мониторинга. Сейчас сделано так, что индикатором разрешенности изменения параметров установки является наличие польз-ля в некоторой группе польз-лей из AD. Программисты реализовали проверку так: при воде имени и пароля программа пытается сделать логон с такими аттрибутами, и если удачно, то читает список групп залогиневшегося поль-ля, и если там есть "нужная группа", то дает изменить параметры установки. Но вот проблема. В связи с необходимостью внедрить систему безопасности, на этом комп-ре применены групповые политики, разрешающие логон только польз-лю USER и админам. И теперь, при вводе имени и пароля при попытке сменить параметр установки программка отпинывает всех, даже если и пользователь все ввел правильно. Разрешить этим "продвинутым" польз-лям логон нельзя: они автоматичски получают возможность входить на этом комп-ре с консоли под своими учетками, а должно быть токо от имени польз-ля USER. Подскажите, что можно сотворить? Есть предположение, что в нашей программе неверно реализована процедура проверки разрешения изменять параметры. Может есть возможность обойтись без выполнения логона? |
|
Отправлено: 15:21, 26-07-2011 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать не совсем уверен, но что если попробовать запускать программу через планировщик от имени требуемого пользователя? В таком случае не надо будет делать дополнительную проверку на принадлежность пользователя к определенной группе?
Цитата pypyrin:
|
|
------- Отправлено: 16:28, 26-07-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать вы не поняли меня наверное
мне нужно чтобы программа запускалась от USER, а вот перед использованием некоторых ее функций необходимо убедится, что человек за консолью комп-ра именно тот, которому можно эти функции делать. Не любой оператор имеет право их выполнить. Программка работает в режиме мониторинга круглосуточно, а вот если надо чего подправить, то токо технолог. Технолог подходит, жмет кнопку "Изменить параметры", выводится диалог "введите имя и пароль" и он вводит свои учетные атрибуты, логин и пароль. Например vasya 123. Программа выполняет логон в AD с использванием vasya 123, и если все ок, то берет список груп, куда входит vasya. Если он входит в группу GOD то ему можно менять параметры. Проблема в том, что групповыми политиками польз-лю vasya запрещено выполнять ЛОГОН на этом комп-ре, токо автологон польз-ля USER. Поэтому такая проверка всегда неОК, и параметры нельзя сменить. Разрешить vasya логиниться на этот комп-р с консоли не представляется возможным - политика безопасности предприятия. Логон пытается сделать в домен (AD). Ну какбудто вы входитев систему при включении комп-ра. Код не могу пока предоставить, попробую позже. |
Отправлено: 16:51, 26-07-2011 | #3 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Хотите самый просто способ решения проблемы? Если программа хранит данные в БД, то проще всего завести там таблицу с зашифрованным именем\паролем, и сверять введенные данные с ними, а не с AD. Либо на сервере в закрытом для чтения доступе положить определенный файл, хоть txt, хоть xml, неважно, и сверять с ними.
Либо давай разбираться с политиками домена, правда это уже маленько в другом форуме надо бы делать, но, если что, вынесем в отдельную тему. Цитата pypyrin:
ПРоверь ка одно предположение: 1. Зайти как обычно на машину под USER. 2. Из командной строки набери net use. Посмотри, есть ли там строка соединения с контроллером домена. 3. Если она есть и ей присвоена какая либо буква, набери net use буква: /d Если буквы нет, а есть просто строка, набери net use \\server_name\share /d 4. ПОсле этого попробуй в своей программе "изменить параметры" Если не поможет, попробуй просто в командной строке набрать команду net use \\имя_контроллера\сетевая_папка /user:домен\имя_пользователя * На запрос ввода пароля введи пароль пользователя. Сообщи о результате. |
|
------- Отправлено: 08:00, 27-07-2011 | #4 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Если так настроено, что runas не запустится от нужного пользователя, то не стоит мучиться. Пользователю нужно разрешить локальный вход. Если запустится, то есть функция CreateProcessAsUser, которую runas и пользует.
|
|
Отправлено: 22:01, 27-07-2011 | #5 |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать да как же вам объяснить то
не нужно ничего запускать уже все запущено, программа работает... и в процессе своей работы, при доступе к некоторым своим функциям (открывает очень секретные свои настройки например) должна проверить, а человек, который это хочет сделать, имеет ли на то разрешение? для этого хочется использовать безопасность на основе Windows. кончно, можно сделатьтабличку в БД, там завести еще своих пользователей с паролями, но это плохо! у меня уже у некоторых людей по 4-5 паролей и логинов от разных программ причем все они работают в одном домене! этоже нонсенс! у человека есть один пароль на вход в систему, и этого должно быть вполне достаточно! как на доступ к БД (Майкрософт SQL сервер) так и для работы с защищёнными функциями всех саомописанных приложений! т.е. программа сейчас написана так, что проверка на вшивость (на доступ к этим самым защищенным функциям) реализован через функцию LogonUser(), а ведь скорее всего можно не так. ведь нужно всего лишь проверить имя и пароль, без логона. |
Отправлено: 14:04, 29-07-2011 | #6 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Цитата pypyrin:
Цитата Delirium:
|
||
------- Отправлено: 15:33, 29-07-2011 | #7 |
Новый участник Сообщения: 45
|
Профиль | Отправить PM | Цитировать Цитата Delirium:
В любом случае проблему я как бы решил Поскольку в программе для проверки использовалась функция BOOL LogonUser( __in LPTSTR lpszUsername, __in_opt LPTSTR lpszDomain, __in_opt LPTSTR lpszPassword, __in DWORD dwLogonType, __in DWORD dwLogonProvider, __out PHANDLE phToken ); Однако терзают меня смутные сомнения Спасибо всем за терпение и помощь! |
|
Отправлено: 15:05, 09-08-2011 | #8 |
Ветеран Сообщения: 5624
|
Профиль | Отправить PM | Цитировать Всегда приятно, когда проблема решена своими силами
|
------- Отправлено: 16:01, 14-08-2011 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Неплохие результаты тестов 3DMark системы на основе AMD A8-3850 | OSZone News | Новости железа | 16 | 16-06-2011 20:21 | |
Разное - [решено] Сборка Barebone-системы на основе Shuttle SA76G2 | NuLLBoyZ | Прочее железо | 3 | 21-04-2010 11:33 | |
Доступ - Предупреждение системы безопасности | angry_dog | Microsoft Windows 7 | 1 | 30-03-2010 22:21 | |
Доступ - [решено] Предупреждение системы безопасности | Rulezzz2 | Microsoft Windows 7 | 1 | 03-03-2010 10:16 | |
Вопрос - политика безопасности системы | svz1979 | Защита компьютерных систем | 1 | 29-11-2009 14:18 |
|