Как интегрировать Active Directory в приложение .NET с помощью DDD?

Как вы интегрируете объекты Active Directory (пользователей, группы и т.д.) в свое приложение DDD.NET? Как выглядят ваши репозитории и как вы обрабатываете сеансы LDAP, транзакции и единицы работы? Обратите внимание, что я не говорю о простых сценариях аутентификации/авторизации, а скорее, когда объекты AD являются частью модели основного домена вашего приложения.

Я работаю над приложением, которое занимается предоставлением/депровизацией пользователей AD, и мне любопытно, что делают другие люди для приведения объектов AD в свое приложение DDD. Я предполагаю, что вы не перетаскиваете объект DirectoryEntry во всем приложении, но я не нашел никаких хороших инструментов типа ORM для объектов LDAP (возможно, OLM - сопоставление объектов и LDAP?).

EDIT: дополнительная справочная информация по этому вопросу находится в этот пост форума из проекта Sharp Architecture.

Ответ 1

На самом деле я делаю что-то похожее. Не та же самая цель, но факт использования DDD для создания приложения, работающего с AD.

Я считаю, что LDAP - это мой уровень сохранения. Таким образом, моя модель домена состоит из объектов, характерных для моего приложения, а не для AD. Реализация моего хранилища - это все специфичные для AD вещи, взятие моих объектов и их сопоставление с объектами AD и так далее. Я фактически построил IRepository для базы, а затем IUserRepository и т.д., Если это необходимо для агрегатов домена. Затем реализации называются ADUserRepository.

Я считаю, что это самый простой способ справиться со всем этим и сохранить мой разум; это также облегчает тестирование для того, что я делаю (не уверен, что это поможет вам/вашему приложению).

Я не знаю никаких инструментов OLM (красивый термин), которые вы можете использовать; Я только что сопоставлял его вручную, так как меня действительно интересует только подмножество того, что у него есть.