Weblogic 12 — Изменение сопоставления роли с заданной областью для группы в развернутом приложении

Наше текущее приложение использует технологию JSF/JPA, развернуто на Weblogic 12.1.2 и делает следующее:

  1. Аутентифицирует пользователя через IDP
  2. IDP после аутентификации пользователя отправляет обратно группы, к которым принадлежит пользователь.
  3. Используя Web.xml и WebLogic.xml, мы сопоставляем группы с ролями.

Наши роли с областью действия приложения очень детализированы, и это помогает нам делать следующее:

  1. Скрыть страницы или компоненты пользовательского интерфейса в пользовательском интерфейсе
  2. использовать аннотацию RolesAllowed для методов

Поскольку сопоставление групп с ролями находится в Weblogic.xml, пользователи нашего приложения не могут изменить сопоставление групп с ролями, и это проблема, которую мне нужно решить.

Моя цель - сделать следующее:

  1. Аутентифицировать пользователя через нашего IDP
  2. IDP отправит нам пользователя Групп, к которому принадлежит
  3. Определите роли в web.xml
  4. Определите таблицы, которые наше приложение будет читать, чтобы найти сопоставление групп и ролей.
  5. Используйте Weblogic API для сопоставления групп с ролями
  6. Создайте пользовательский интерфейс, чтобы наши пользователи могли изменять сопоставление группы и роли.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу найти, как динамически выполнять сопоставление групп и ролей с помощью WebLogic, поскольку я не могу получить доступ к WebLogic API, который позволит мне изменить сопоставление групп и ролей в моем развернутом приложении. Кто-нибудь делал это раньше?

Я рассмотрел возможность создания пользовательского сопоставителя ролей, но я не уверен, как получить дескриптор этого пользовательского сопоставителя ролей в нашем развернутом приложении.


person kali    schedule 05.02.2016    source источник
comment
этот поток stackoverflow.com/questions/9082208/ отвечает на мой вопрос, но для сервера приложений GlassFish. Мне нужно то же самое для WebLogic   -  person kali    schedule 08.02.2016


Ответы (2)


Что касается Java EE 7, это невозможно на основе этого потока динамические роли на сервере Java EE

Если кто-то хочет, чтобы эта функция была добавлена ​​в Java EE 8, пожалуйста, проголосуйте за следующие два открытых запроса функций в Java EE 8.

https://java.net/jira/browse/JAVAEE_SECURITY_SPEC-8 https://java.net/jira/browse/JASPIC_SPEC-22

person kali    schedule 10.02.2016

Не совсем конкретный ответ, но это можно сделать с помощью специального решения Weblogic.

См. примеры в: https://docs.oracle.com/cd/E13212_01/wles/docs42/dvspisec/examples.html

Вы должны реализовать метод getRoles:

import weblogic.security.spi.RoleMapper;
import weblogic.security.spi.RoleProvider;

public final class MyRoleMapperProviderImpl implements RoleProvider, RoleMapper 
{
   public Map getRoles(Subject subject, Resource resource,
      ContextHandler handler)
   {
      ...
   }
}

Вы также можете создать для него MBean, чтобы установить автоматическую загрузку: https://docs.oracle.com/middleware/1213/wls/DEVSP/generate_mbeantype.htm#DEVSP617

java -DMDF=xmlfile -Dfiles=filesdir -DcreateStubs=true
weblogic.management.commo.WebLogicMBeanMaker

Результат можно добавить в виде jar-файла в путь к классам сервера, и реализация будет доступна при запуске сервера.

person Escay    schedule 28.09.2017