Опитвам се да създам RPM-опакован Ear файл, който трябва да може да се инсталира заедно с други RPM-packagesd Ear файлове в JBoss контейнер. (Вероятно бих могъл да създам отделен контейнер в JBoss, но това е много режийно за едно ухо.) Това работи добре, с изключение на един проблем.
Проблемът ми е, че този файл на 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>