Моя компания довольно широко использует приложение Access + MySQL, которое, вероятно, увидит значительный трафик на Daily WTF, если я опубликую исходный код. Управление пользователями и их разрешениями выходит из-под контроля, и я, кажется, трачу все больше и больше времени на их настройку или на попытки выяснить, почему кто-то не может видеть то, что должен видеть.
Первоначально он был настроен для использования тремя пользователями на одном складе. В настоящее время его используют более двадцати пользователей в четырех штатах, и скоро будут добавлены новые, а функции были добавлены в соотношении примерно 10: 1 с пользователями ... Фактическое основное приложение неплохое, но управление пользователи это боль. Access создает приятный интерфейс для самих данных, которые хранятся в серверной части MySQL в нашем головном офисе. У пользователей есть VPN-боксы Cisco в дочерних филиалах, и это тоже хорошо. Объем перешел от простой записи о складской доставке до полноценной CRM / ERP ... ну, я не думаю, что вы могли бы назвать это решением. Может быть, эмульсия. Если бы у меня был бюджет, я бы позвонил в SAP и сказал, чтобы они его использовали. Боюсь, что в обозримом будущем это невозможно.
Следуя инструкциям от Google (не всегда самый безопасный вариант), я использовал «Мастер безопасности на уровне пользователя» в Access, чтобы назначить имена и пароли для различных пользователей, и это было нормально, когда я начал с 4-5 пользователями всего и 3 активными пользователями. . Но сейчас это довольно громоздко. Мое самое сокровенное желание и желание состоит в том, чтобы существовал способ аутентификации пользователей и назначения ролей привилегий на основе имени пользователя и пароля Active Directory. Мне сказали, что это невозможно. Несколько поисков в Google не дали ничего примечательного.
Я предполагаю, что должно быть возможно получить некую структуру аутентификации с использованием Active Directory, потому что VBA имеет ссылки на всевозможные API в Windows. Однако ... стоит ли тратить время и силы? Кто-нибудь когда-нибудь заставлял это работать, или я могу взорвать не только мое достойное WTF приложение, но и домен?
Я знаю, что это возможно, но похоже, что очень немногие разработчики Access этим занимаются. Если бы код написал кто-то другой, я бы использовал его сам, но этого недостаточно, чтобы писать самому.
Ключевой концепцией является то, что вы можете получить доступ к информации AD через запрос LDAP с помощью ADO. Невозможно принудительно применить разрешения для объектов Access с этим, но вы, безусловно, можете контролировать поток / представление приложения на основе членства в AD. Видеть эта тема для отправной точки. Кроме того, есть База знаний MS статья об этом, объясняющая подход LDAP.
Кстати, если вам не нужны специфические для AD функции (например, организационные подразделения), вам вообще не нужно использовать AD. Вы можете использовать обычные вызовы API для получения информации о членстве в группе. Видеть этот пост в Stackoverflow для некоторого кода, предлагающего направление движения (я не могу проверить этот код, так как он выглядит скорее эллиптическим, т.е. не декларациями API, но дает основную концепцию).
На этом уровне невозможно напрямую взаимодействовать с AD. Лучшее, что вы могли бы сделать напрямую, - это назначить права доступа к файлам на основе учетных записей AD. Чтобы реализовать это с помощью VBA, потребовалось бы немного усилий, но, конечно, не вне досягаемости понимания. Я бы сказал, что вам следует провести довольно основательный анализ рентабельности инвестиций, прежде чем приступить к делу.