Могу ли я использовать Active Directory для обеспечения безопасности на уровне пользователя в приложении Access? Пожалуйста, пожалуйста?

Могу ли я использовать Active Directory для обеспечения безопасности на уровне пользователя в приложении Access? Пожалуйста, пожалуйста?

Моя компания довольно широко использует приложение Access + MySQL, которое, вероятно, получило бы значительный трафик на Daily WTF, если бы я опубликовал исходный код. Управление пользователями и их разрешениями выходит из-под контроля, и я, похоже, трачу все больше времени на их настройку или на попытки выяснить, почему кто-то не видит то, что он должен видеть.

Первоначально он был настроен для использования тремя пользователями на одном складе. Сейчас его используют более двадцати пользователей в четырех штатах, и скоро их будет больше, а функции были добавлены примерно в соотношении 10 к 1 к числу пользователей... Фактическое основное приложение неплохое, но управление пользователями — это боль. Access — это хороший интерфейс к самим данным, которые хранятся на бэкэнде MySQL в нашем главном офисе. У пользователей есть ящики Cisco VPN в филиалах-сателлитах, и это тоже надежно. Область действия перешла от простой записи о доставке на склад до полноценной CRM/ERP... ну, я не думаю, что это можно назвать решением. Эмульсия, может быть. Если бы у меня был бюджет, я бы позвонил в SAP и сказал им заняться этим. Боюсь, что это вне области возможного в обозримом будущем.

Следуя инструкциям Google (не всегда самое безопасное), я использовал «Мастер безопасности на уровне пользователя» в Access, чтобы назначить имена пользователей и пароли различным пользователям, что было нормально, когда я начинал с 4-5 пользователей в общей сложности и 3 активных пользователей. Но теперь это довольно громоздко. Мое самое заветное желание и стремление — чтобы был какой-то способ аутентификации пользователей и назначения ролей привилегий на основе имени пользователя и пароля Active Directory. Мне сказали, что это невозможно. Несколько поисков в Google не дали ничего примечательного.

Я предполагаю, что можно получить некую структуру аутентификации с использованием Active Directory, поскольку VBA имеет ссылки на всевозможные API в Windows. Однако... стоит ли это времени и усилий? Кто-нибудь когда-нибудь заставлял это работать, или я могу взорвать не только свое WTF-достойное приложение, но и домен?

решение1

Я знаю, что это возможно, но, похоже, очень немногие разработчики Access это делают. Если бы кто-то другой написал код, я бы использовал его сам, но он мне не настолько нужен, чтобы писать его самому.

Ключевая концепция заключается в том, что вы можете получить доступ к информации AD через запрос LDAP с помощью ADO. Нет способа принудительного применения разрешений к объектам Access с помощью этого, но вы, безусловно, можете контролировать поток/представление приложения на основе членства в AD. Смотритеэта темадля отправной точки. Также естьБаза знаний MSстатья на эту тему, объясняющая подход LDAP.

Кстати, если вам не нужна специфичная для AD функциональность (например, организационные подразделения), вам вообще не нужно использовать AD. Вы можете использовать обычные вызовы API для получения информации о членстве в группе. Смотретьэтот пост Stackoverflowдля некоторого кода, указывающего направление движения (я не могу проверить этот код, так как он выглядит довольно эллиптическим, т.е. не декларациями API, но он дает основную концепцию).

решение2

На этом уровне невозможно напрямую взаимодействовать с AD. Лучшее, что вы сможете сделать напрямую, — это назначить разрешения файлам на основе учетных записей AD. Потребуется немного усилий, чтобы реализовать это через VBA, но, безусловно, это не будет за пределами понимания. Я бы сказал, что вам следует провести довольно основательный анализ ROI, прежде чем браться за это.

Связанный контент