Переносимость ролей безопасности с помощью областей jdbc - PullRequest
2 голосов
/ 03 декабря 2011

Я завершаю работу над приложением Java EE 6. Приложение было разработано с использованием GlassFish, но я хочу сделать его переносимым между различными серверами приложений.

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

Чтобы сделать мое приложение переносимым, мне нужно понять, можно ли сопоставить роли безопасности и принципалов / пользователей на самом сервере приложений или в исходном коде приложения без использования специфичный для сервера приложений дескриптор развертывания glassfish-web.xml или эквивалентный. Это позволило бы избежать задачи развертывания редактора файла .war, что мне бы хотелось, поскольку приложение должно быть переносимым.

Поскольку я сопоставил роли с определенными в приложении группами с одинаковыми именами, код, который я хотел бы удалить, -

  <security-role-mapping>
      <role-name>RoleGroup1</role-name>
      <group-name>RoleGroup1</group-name>
  </security-role-mapping>
  <security-role-mapping>
      <role-name>RoleGroup2</role-name>
      <group-name>RoleGroup2</group-name>
  </security-role-mapping>

1 Ответ

0 голосов
/ 04 декабря 2011

Согласно спецификации EBJ 3.1:

17.2.5.3 Декларация ролей безопасности, на которые ссылается код Бина

...

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

  • Объявите имя роли безопасности, используя элемент role-name. Имя должно быть имя роли безопасности, которое используется в качестве параметра для Метод isCallerInRole (String roleName).

  • При необходимости укажите описание роли безопасности в элементе description.

Дополнительно:

Если используется дескриптор развертывания, поставщик компонентов и / или Application Assembler использует дескриптор развертывания роли безопасности элемент следующим образом:

  • Определите каждую роль безопасности, используя элемент роли безопасности.
  • Используйте элемент role-name для определения имени роли безопасности.
  • При необходимости используйте элемент description, чтобы предоставить описание роли безопасности.

Следующий пример иллюстрирует определение ролей безопасности в дескриптор развертывания.

<assembly-descriptor>
  <security-role>
    <description>
      This role includes the employees of the
      enterprise who are allowed to access the 
      employee self-service application. This role
      is allowed only to access his/her own 
      information.
    </description>
    <role-name>employee</role-name>
  </security-role>
...