Авторизация LDAP

Я начинаю внедрять механизм авторизации и аутентификации с использованием LDAP для какой-то существующей системы. На этапе разработки я сталкиваюсь с трудным дизайнерским решением: где хранить роли пользователей?

Если бы я использовал СУБД, похоже, что будет три таблицы: user, role и user_role для сопоставления ролей и пользователей.

Пожалуйста, предложите доступные решения. Я думаю о хранении ролей пользователей в БД и пользователей в LDAP, но не уверен, что это лучшее решение. Я использую JBoss в качестве сервера приложений.


person Tioma    schedule 05.06.2011    source источник


Ответы (1)


С архитектурной точки зрения у вас множество решений. Вот решение, которое хранит все ваши данные в каталоге.

В вашем Справочнике вы можете закодировать свои «Роли» с объектами из класса со значением «группа», например groupOfNames или group (в зависимости от вашего Справочника). Отличительные имена пользователей (DN) будут закодированы в многозначном атрибуте этих объектов (обычно member). DN объекта "Роль", в свою очередь, может быть закодировано в многозначном атрибуте объекта пользователя (Пример: memberof)

Если ваш Справочник поддерживает ссылочную целостность, он может действовать как системный Справочник. Тогда атрибуты member и memberOf могут управляться самим Справочником. Это означает, что если вы перемещаете пользователя из организационной единицы в другую, Справочник обновляет атрибут member объектов «Роль», которым принадлежит пользователь.

В другом случае (без ссылочной целостности) ваше приложение должно управлять целостностью атрибута.

Это коротко, но я надеюсь, что это поможет.


Отредактировано

Прежде всего, я рекомендую вам Apache Directory Studio, который (для меня) является одним из лучших браузеров LDAP. . Этот инструмент позволит вам видеть свой каталог и более дружелюбно изучать LDAP. Используя этот инструмент, я покажу вам, как ADAM (режим приложения Active Directory) в бесплатном каталоге Microsoft кодирует «Роли».

На первом изображении вы можете видеть Админа Адама как члена группы администраторов:

AdminAdam как член группы администраторов

На этом втором изображении вы можете увидеть присутствие группы в атрибуте memberof пользователя adminAdam.

атрибут memberof пользователя adminAdam

ADAM поддерживает ссылочную целостность.

person JPBlanc    schedule 06.06.2011
comment
Здорово. А как насчет разрешения на роль? я должен следовать таким же образом. Боюсь, что в результате возьму действительно сложную структуру. Что вы думаете? Еще раз спасибо! - person Tioma; 06.06.2011