Отделна конфигурация за влизане за JBoss?

Опитвам се да създам 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>

person Bittrance    schedule 28.09.2011    source източник


Отговори (1)


Можете да опитате да настроите модула за влизане с помощта на услугата DynamicLoginConfig. Никога не го използвам, но изглежда като нещо, което може да ви помогне. Тя ви позволява да създадете конфигурация на модул за влизане в различен файл и да я разположите по време на инсталиране на приложението.

Тук можете да намерите повече информация за него:

person Lukasz Stelmach    schedule 28.09.2011