Как поставщик JACC может использовать средства сопоставления принципала и роли сервера, на котором он развернут?

Я пишу JACC поставщик.

Попутно это означает реализацию PolicyConfiguration,

PolicyConfiguration отвечает за прием информации о конфигурации от сервера приложений, например, какие разрешения принадлежат тем или иным ролям. Это так, что Policy позже он может принимать решения об авторизации, когда передает информацию о текущем пользователе и о том, что он пытается сделать.

Тем не менее, это не является частью PolicyConfiguration (зверский) контракт на поддержание соответствия между ролями и их разрешениями, и Principals которые назначены на эти роли.

Обычно - всегда, действительно - сервер приложений содержит это отображение. Например, на Glassfish вы влияете на это отображение, предоставляя такие вещи, как sun-web.xml а также sun-ejb-jar.xml и так далее с вашими модулями Java EE. (Эти файлы, относящиеся к конкретному поставщику, отвечают, например, за superusers это группа, которой должна быть назначена роль приложения admins.)

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

Вот - совершенно произвольно - взгляд IBM на этот вопрос, который, кажется, подтверждает мое подозрение, что то, что я хочу сделать, по сути невозможно. (Больше боеприпасов для моего случая, что этот конкретный контракт Java EE не стоит бумаги, на которой он напечатан.)

Мой вопрос: как мне получить эту информацию о сопоставлении главных ролей в - для начала -Glassfish и JBoss изнутри PolicyConfiguration? Если есть стандартный способ сделать это, о котором я не знаю, я весь в ушах.

1 ответ

Краткий ответ: нет стандартного способа сделать это.

Хотя Glassfish и JBoss поддерживают сопоставления принципала с ролью, JACC не предполагает, что это делают все контейнеры, и поэтому делегирует ответственность за сохранение этих сопоставлений реализации поставщика JACC. Из документов (см.: PolicyConfiguration.addToRole метод):

Задача поставщика политики - обеспечить, чтобы все разрешения, добавленные к роли, предоставлялись принципалам, "сопоставленным с ролью".

Другими словами, вам нужно реализовать это внутри провайдера JACC для каждого контейнера. Например, для JBoss вы можете использовать один из подклассов AbstractRolesMappingProvider,

Другие вопросы по тегам