Я пытаюсь создать Ear-файл с пакетом RPM, который должен быть установлен вместе с другими Ear-файлами RPM-пакета в контейнере JBoss. (Я, вероятно, мог бы создать отдельный контейнер в JBoss, но это много накладных расходов для одного Ear.) Это работает нормально, за исключением одной проблемы.
Моя проблема в том, что этот Ear-файл предоставляет веб-сервисы, которые используют свою собственную политику аутентификации (login-config.xml policy / application-policy / authentication / login-module). Теперь, когда несколько пакетов RPM хотят предоставить информацию для аутентификации через этот файл, мы вступаем в конфликт с правилом спецификации RPM, согласно которому ни один файл не может принадлежать более чем одному пакету RPM (и в любом случае, какой бы RPM ни был последним, он разрушит предыдущий).
Можно ли каким-либо образом объявить блок политики приложения / аутентификации в отдельном файле или каким-либо образом поместить его за пределы login-config.xml? Например, можно ли объявить дополнительные mbeans безопасности (в отдельных файлах), которые ссылаются на отдельное определение XML для входа в систему?
Это JBoss v4.2, но я хотел бы подумать позже, решит ли он эту проблему.
Обновлять:
Лукаш правил. Ниже рабочий конфиг!
<?xml version='1.0'?>
<server>
<mbean code="org.jboss.security.auth.login.DynamicLoginConfig"
name="jboss.security.tests:service=LoginConfig">
<depends optional-attribute-name="SecurityManagerService">
jboss.security:service=JaasSecurityManager
</depends>
<depends optional-attribute-name="LoginConfigService">
jboss.security:service=XMLLoginConfig
</depends>
<attribute name="PolicyConfig" serialDataType="jbxb">
<jaas:policy
xsi:schemaLocation="urn:jboss:security-config:4.1 resource:security-config_4_1.xsd"
xmlns:jaas="urn:jboss:security-config:4.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<jaas:application-policy name="mySecurityDomain">
<jaas:authentication>
<jaas:login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<jaas:module-option name="unauthenticatedIdentity">noone</jaas:module-option>
<jaas:module-option name="dsJndiName">java:/myDataSource</jaas:module-option>
<jaas:module-option name="principalsQuery">SELECT password FROM WebServiceUser WHERE userName=?</jaas:module-option>
<jaas:module-option name="rolesQuery">SELECT role, 'Roles' FROM WebServiceUser WHERE userName=?</jaas:module-option>
</jaas:login-module>
</jaas:authentication>
</jaas:application-policy>
</jaas:policy>
</attribute>
</mbean>
</server>