JBoss的分离登录配置?

时间:2011-09-28 14:24:28

标签: java security jboss packaging rpm

我正在尝试创建一个RPM打包的Ear文件,该文件应该可以与JBoss容器中的其他RPM-packagesd Ear文件一起安装。 (我可能在JBoss中创建一个单独的容器,但是对于一个Ear来说这是一个很大的开销。)除了一个问题外,这个工作正常。

我的问题是这个Ear文件公开了使用自己的身份验证策略的Web服务(login-config.xml policy / application-policy / authentication / login-module)。现在多个RPM想要通过这个文件提供身份验证信息,我们与RPM规范规则发生冲突,即任何文件都不能由多个RPM软件包拥有(无论如何,最后一个RPM会破坏前一个)。

是否有任何方法可以在单独的文件中声明应用程序策略/身份验证块,或者以某种方式将其置于login-config.xml之外?例如,是否可以声明引用单独的登录XML定义的其他安全mbeans(在单独的文件中)?

这是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>

1 个答案:

答案 0 :(得分:1)

您可以使用DynamicLoginConfig服务尝试设置登录模块。我从不使用它,但它看起来像是可以帮助你的东西。它允许您创建登录模块配置 在不同的文件中,并在应用程序安装期间部署它。

在这里您可以找到更多关于它的信息: