Изменение ролей JAAS на основе флагов лицензии на программное обеспечение
Вопрос
У меня есть довольно обычное приложение Java EE, работающее на JBOSS.Он использует аутентификацию JAAS JBoss DatabaseLoginModule.В Hibernate также есть пользователи/роли прикладного уровня, которые абсолютно одинаковы.
У меня есть идея (которая, я думаю, в любом случае очень полезна для меня) иметь бит возможности, который я могу установить в объекте лицензии на программное обеспечение (не используя спящий режим), который делает всех пользователей пользователями только для чтения.Это позволяет мне создать версию продукта, доступную только для чтения, путем повторного лицензирования.
Я хотел бы переназначить ассоциации пользователей на основе логического флага, доступного внутри программы.
Обычно мы получаем (многие-многие присоединяются)
Пользователь -*UserRole*-Role -*RoleActions
где
user.roleid => role.id
Когда установлено логическое значение (бит возможности, установленный в лицензии на программное обеспечение)
Я бы хотел, чтобы JAAS действовал так, как будто всем пользователям назначена роль =1, если так указано в лицензии.
Есть идеи ?
Решение
Создав подкласс DatabaseServerLoginModule, я могу выполнять дополнительные проверки.(по лицензии на программное обеспечение)
Тривиально я могу тогда
Если срок действия лицензии истек, укажите пользователя только для чтения (учетные данные фиксированы).
Если в лицензии установлен бит возможности только для чтения, укажите пользователя только для чтения (учетные данные фиксированы).
Поскольку вход в систему был перехвачен, поиск пользователя Hibernate будет соответствовать нужному пользователю.
Другие советы
Возможно, я здесь упускаю суть, но почему бы не сделать это программно?
В User
объект, предоставьте временный геттер, например getAuthenticatedRoles()
это дополнительно отфильтрует то, что Hibernate
загружен.Кроме того, создайте исходный метод получения сопоставленной коллекции. protected
, и использовать только getAuthenticatedRoles()
из другого кода Java.