Пользовательская реализация isUserInRole с RDBMS
Я занимаюсь разработкой приложений Java EE 6, используя Glassfish 3.1.1 в качестве сервера приложений. Я использую декларативную и программную безопасность. Я определил несколько ролей в своем дескрипторе развертывания и определил все ограничения безопасности.
Я использовал JDBCReal, и теперь я изменил его на LDAPRealm. Поэтому я хотел бы управлять отображением групп пользователей, не полагаясь на группы LDAP. Другими словами, я хочу пройти аутентификацию на LDAP, но авторизоваться с использованием RDBM, спрашивая, принадлежит ли текущий пользователь к группе X.
Я думал, что будет способ "переопределить" метод isUserInRole. При поиске я слышал о таких вещах, как JACC, и обнаружил, что есть способы подключить пользовательский поставщик JACC или что-то подобное к серверу приложений, но я не смог найти какую-либо собственную реализацию JACC, и я понятия не имею, как сделать это (или событие, если это будет работать..)
1 ответ
Согласно разделу Работа с областями, пользователями, группами и ролями, область - это "полная база данных пользователей и групп, которые идентифицируют действительных пользователей веб-приложения". Область определяет набор полномочий и ролей.
Затем Glassfish также имеет модули входа в систему, которые определяют способ аутентификации пользователя, например, с помощью имени пользователя / пароля, сертификатов и т. Д. На практике поддерживается только имя пользователя / пароль.
Поэтому, насколько я понимаю, вам нужно реализовать гибридную область LDAP/JDBC. Вот пример кода для пользовательского модуля входа в систему и области. Вы можете увидеть это мой аналогичный ответ.