Как обрабатывать информацию о пользователях с помощью Spring Security, Spring LDAP и Hibernate? - PullRequest
3 голосов
/ 02 августа 2011

У меня есть приложение, построенное на Spring MVC, которое использует Hibernate для всех своих потребностей взаимодействия с БД.Теперь необходимо обновить приложение, чтобы использовать нашу инфраструктуру LDAP для передачи пользовательской информации, включая основные пользовательские данные, такие как имя и адрес электронной почты, а также потребности в аутентификации и авторизации.

Поскольку до сих пор все было в одном месте (БД), отчеты все довольно просты, поскольку Hibernate управляет поиском информации по мере необходимости, начиная с требуемых запросов.Захватить имя пользователя и т. Д. Очень просто, поскольку Hibernate загружает данные лениво.

При желании управлять пользовательской информацией с помощью LDAP Hibernate больше не сможет заполнять пользовательскую информацию на лету., поскольку он не будет управлять данными пользователей.Как мы должны использовать LDAP для управления пользовательскими данными и иметь дело с аутентификацией / авторизацией, не причиняя особой боли, когда нам нужно получить пользовательские данные, такие как Имя и т. Д.?рассматривается как «источник» для данных, и текущая система остается без изменений.Это потребует внесения изменений в код обработки транзакций для обновления в соответствии с LDAP, чтобы активная транзакция использовала актуальную информацию, а также периодическую синхронизацию с LDAP для обеспечения актуальности базы данных приложения для целей отчетности.

Это решение кажется немного хакерским и, похоже, содержит много движущихся частей, но я не смог найти много информации по этому вопросу в других местах в Интернете.

Как следует обрабатывать информацию пользователя / как следуетПриложение должно быть структурировано так, чтобы вся пользовательская информация была легко доступна и могла быть легко привязана к остальной части системы для целей отчетности?Есть ли способ интегрировать Spring LDAP и Hibernate, чтобы слои над уровнем данных не должны были знать?Или получение информации из LDAP в существующую базу данных - самый простой способ?

1 Ответ

1 голос
/ 04 августа 2011

Если вы вообще не можете удалить пользовательскую таблицу, потому что она используется другими объектами, тогда я предлагаю отделить элементы безопасности от бизнес-компонентов.

Это означает удаление единственной информации, необходимой для безопасности, из пользовательской таблицы (логин, пароль, ...), так что остается только то, что необходимо для реализации бизнес-кейсов.

Затем переписать средства безопасности, чтобы они основывались на LDAP. Я полагаю, вы найдете способ получить объект базы данных пользователя для данного принципала.

Остается только одно: как создавать новые объекты базы данных пользователей, если новый человек получает новый логин. У вас есть 3 варианта, лучший из которых сильно зависит от вашего приложения:

  • Создать объект базы данных, если пользователи впервые войдут в систему
  • Создайте объект базы данных, если он вам нужен
  • Создайте объект базы данных при его создании в LDAO (или через несколько минут), например, с помощью задания cron или какой-либо службы Spring Scheduling.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...