Добавление многофакторных отношений в схему ldap
У меня есть сервер LDAP, который имеет следующие типы объектов:
person- пользователи; перечислены вou=people,dc=example,dc=comorganization- компании, которые являются нашими клиентами; перечислены вou=clients,dc=example,dc=comorganizationalUnit- регионы офисов; перечислены вou-regions,dc=example,dc=comoffice- офисы; перечислены вou=locations,dc=example,dc=com
В рамках нашего дизайна приложения каждый клиент определяет для себя набор правил RBAC. Например, клиент может создать следующие роли:
organization-admin- управляет данными компанииregion-admin- управляет данными регионаregion-manager- путешествует между всеми филиалами в регионеbranch-manager- управляет филиаломbranch-staff- работает в филиале
Может быть произвольно больше ролей, и это возможно для одного person иметь несколько ролей.
Проблема в том, что отображение пользователей на роли не является простым отношением "многие ко многим", для которого я мог бы сделать свои версии organization, organizationalUnit, а также office вести себя как groupByName объекты с несколькими members. Вместо этого мне нужно, чтобы мои отношения были трехсторонними - связь между пользователем, офисом (или регионом, или клиентом) и ролью.
(Прямо сейчас мы используем базу данных SQL с трехсторонней сводной таблицей, которая имеет столбцы user_id, role_id, а также location_id, но я не хочу продолжать управлять этими данными за пределами LDAP, если все остальное находится внутри LDAP.)
Как я могу смоделировать эти отношения в LDAP?