Я пишу JACC
провайдеру.
Попутно это означает реализацию PolicyConfiguration
.
PolicyConfiguration
Отвечают за прием информации о конфигурации от сервера приложений, например, какие права начислять какие роли. Это сделано для того, чтобы Policy
впоследствии можно было принимать решения об авторизации при передаче информации о текущем пользователе и о том, что он пытается сделать.
Однако он не является частью PolicyConfiguration
(зверского) контракта по поддержанию соответствия между ролями и их разрешениями, Principals
которые назначаются этим ролям.
Обычно - всегда, действительно - сервер приложений содержит это отображение. Например, на Glassfish, вы влияете это отображение, поставляя такие вещи , как sun-web.xml
и sun-ejb-jar.xml
и так далее с модулями Java EE. (Эти файлы, относящиеся к конкретному поставщику, отвечают за то, что, например, superusers
это группа, которой должна быть назначена роль приложения admins
.)
Я хотел бы повторно использовать функциональность этих файлов, и я хотел бы сделать это для максимально широкого спектра серверов приложений.
Вот - совершенно произвольно - взгляд IBM на этот вопрос, который, кажется, подтверждает мое подозрение, что то, что я хочу сделать, по сути невозможно . (Больше боеприпасов для моего случая, что этот конкретный контракт Java EE не стоит бумаги, на которой он напечатан.)
Мой вопрос: как мне получить эту информацию о сопоставлении главных ролей в - для начала - Glassfish и JBoss изнутри PolicyConfiguration
? Если есть стандартный способ сделать это, о котором я не знаю, я весь в ушах.
источник
Because JSR-115 does not define how to address role mapping, WebLogic JACC classes are used for role-to-principal mapping.
см. Docs.oracle.com/cd/E24329_01/web.1211/e24485/…Ответы:
Краткий ответ: нет стандартного способа сделать это.
Хотя Glassfish и JBoss поддерживают сопоставления между субъектами и ролями, JACC не предполагает, что это делают все контейнеры, и поэтому делегирует ответственность за сохранение этих сопоставлений реализации поставщика JACC. Из документов (см .:
PolicyConfiguration.addToRole
метод ):Другими словами, вам нужно реализовать это внутри провайдера JACC для каждого контейнера. Например, для JBoss вы можете использовать один из подклассов
AbstractRolesMappingProvider
.источник
PolicyContextHandler
специально зарегистрированного провайдером для этой цели) не передает иное. Другой поставщик мог бы также полностью игнорировать понятие ролей (и, следовательно, предоставленных контейнеромPolicyConfiguration
), вместо этого работая исключительно на (предоставленных приложением) сопоставлениях основных и разрешений (и где эти разрешения не должны быть ограничены теми JACC).