Изменение ролей JAAS на основе флагов лицензии на программное обеспечение

У меня есть довольно обычное приложение Java EE, работающее на JBOSS. Он использует JAAS-аутентификацию JBoss DatabaseLoginModule. У него также есть пользователи/роли прикладного уровня в Hibernate, которые точно такие же.

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

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

Итак, обычно мы получаем (многие-многие присоединяются)

Пользователь -*UserRole*-Role -*RoleActions

куда

user.roleid =>role.id

Когда установлено логическое значение (бит возможности, установленный в лицензии на программное обеспечение)

Я бы хотел, чтобы JAAS действовал так, как будто все пользователи имеют ролевый идентификатор = 1, когда это указано в лицензии.

Есть идеи ?


person Tim Williscroft    schedule 24.03.2009    source источник


Ответы (2)


Создав подкласс DatabaseServerLoginModule, я могу выполнять дополнительные проверки. (на лицензии на программное обеспечение)

Тривиально я могу тогда

  1. Если срок действия лицензии истек, укажите пользователя Только для чтения (учетные данные фиксированы)

  2. Если в лицензии установлен бит возможности только для чтения, укажите пользователя только для чтения (учетные данные фиксированы).

Поскольку логин был перехвачен, поиск пользователя Hibernate будет для нужного пользователя.

person Tim Williscroft    schedule 26.05.2009

Может быть, я пропустил лодку здесь, но почему бы не сделать это программно?

В объекте User предоставьте временный геттер, такой как getAuthenticatedRoles(), который дополнительно отфильтрует то, что загружено Hibernate. Кроме того, сделайте исходный геттер сопоставленной коллекции protected и используйте только getAuthenticatedRoles() из другого кода Java.

person javashlook    schedule 25.03.2009
comment
потому что мне нужно подставить другую роль для Пользователя. Я попытался отфильтровать методы, подобные getRole(), и пользователь (принципал) к тому времени уже имеет свою роль. - person Tim Williscroft; 26.03.2009