Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JBoss的独立登录配置?_Java_Security_Jboss_Packaging_Rpm - Fatal编程技术网

Java JBoss的独立登录配置?

Java JBoss的独立登录配置?,java,security,jboss,packaging,rpm,Java,Security,Jboss,Packaging,Rpm,我正在尝试创建一个RPM打包的Ear文件,它应该可以与JBoss容器中的其他RPM打包的Ear文件一起安装。(我可能可以在JBoss中创建一个单独的容器,但这对于一个Ear来说是一个很大的开销。)这很好,除了一个问题 我的问题是,这个Ear文件公开了使用自己的身份验证策略(login-config.xml policy/application policy/authentication/login module)的web服务。现在,多个RPM希望通过该文件提供身份验证信息,因此我们与RPM规范规

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

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

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

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

jboss.security:service=JaasSecurityManager
jboss.security:service=XMLLoginConfig
无人
java:/myDataSource
从WebServiceUser中选择密码,其中用户名=?
从WebServiceUser中选择角色,“角色”,其中用户名=?

您可以尝试使用DynamicLoginConfig服务设置登录模块。我从来没用过它,但它看起来对你有帮助。它允许您创建登录模块配置 并在应用程序安装期间部署它

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