
Мы находимся в ситуации, когда мы хотели бы предложить нашим клиентам возможность управлять своими пользователями самостоятельно. Это около 300 клиентов с общим количеством пользователей до 10.000.
Помимо создания, обновления и удаления пользователей, они очень часто будут читать информацию о пользователях для получения статики и другой полезной информации. Вся эта функциональность должна быть доступна на веб-странице интрасети (.NET Framework 4), к которой пользователи будут получать доступ через Citrix или аналогичный.
Теперь проблема в том, что мы бы очень хотели, чтобы пользователи не запрашивали AD напрямую для каждого запроса, а вместо этого заставили бы их обращаться к базе данных, которая синхронизирована с AD. Было бы достаточно запускать эту синхронизацию несколько раз в день (может быть, каждые 5 часов). Когда они создают пользователя, он не должен быть доступен сразу, а должен быть проверен и затем создан в течение двух дней (следующим шагом будет удаление этого ручного просмотра, но это выходит за рамки этого вопроса).
Что вы думаете об этой синхронизации AD? Есть ли у кого-нибудь опыт с этим и делается ли это в других организациях, где будет много запросов, которые лучше обрабатываются базой данных, чем AD (я полагаю)?
Есть ли какие-либо методы для написания такого скрипта, который синхронизирует AD с таблицами базы данных? Меня больше всего волнуют отношения групп/участников, которые могут быть довольно сложными. Или есть программное обеспечение, которое синхронизирует AD с базой данных?
Любые комментарии будут высоко оценены. Спасибо.
решение1
Вы можете настроить Lightweight Directory Services (ранее ADAM) для репликации схемы и объектов AD во внешнюю базу данных LDAP, которую пользователи могут запрашивать и получать информацию, о которой вы говорите. Это позволяет вам быть конкретным в отношении того, что вы раскрываете внешне, синхронизируя только те объекты, которые вы хотите опубликовать, и не раскрывая другие объекты AD.
решение2
Синхронизация Active Directory с базой данных — довольно распространенная необходимость, не обязательно для описанного вами варианта использования, но чаще всего для компаний, управляющих своими сотрудниками с помощью HR-инструмента, который сохраняет их данные в базе данных.
Вы можете довольно легко синхронизировать содержимое базы данных с AD, используяКоннектор синхронизации LDAP (LSC)который является инструментом с открытым исходным кодом, специально разработанным для этой цели. Короче говоря, этот инструмент должен заменить тот скрипт, который вы могли бы написать вручную, за исключением ошибок, с которыми вы столкнетесь, и плюс различные функции, облегчающие синхронизацию.
Я настроил похожую синхронизацию из Oracle DB на сервер LDAP (помните, что AD также является сервером LDAP) для более чем 70.000 пользователей, включая членство в группах. После первой инициализации синхронизация прошла чуть меньше чем за 10 минут.
Следующая ссылка должна быть вам интересна, независимо от того, принимаете ли вы LSC или нет:Множество технических советов по синхронизации данных с/из Active Directory.
решение3
Если у вас есть некоторые навыки программирования, вы можете настроить и адаптироватьпссоод. Это содержит:
- Скрипт Perl, который синхронизирует AD с сервером OpenLDAP или базой данных SQL.
- АСервис для UnixДемон, который также позволяет синхронизировать пароли.