在JBoss 7.1.1上的standalone.xml之外声明安全域

KK-*_*dia 9 security jboss jaas java-ee

我正在使用JBoss 7上的安全域进行Annotations的EJB-Security.例如

@RolesAllowed({"User", "Admin"})
Run Code Online (Sandbox Code Playgroud)

目前,我在standalone.xml中声明了安全域.这是小事情的批准,但我想在同一JBoss服务器上使用这个安全孩子与不同的项目.因此,我正在寻找一种在standalone.xml之外声明安全域的方法.我想在war-Deployment中使用Deployment Descriptors.

根据这个文档,这应该是可能的.但这适用于JBoss 5,似乎不适用于JBoss 7.1.1.由于Parser Error,启动JBoss会抛出异常.我也看过这个问题,但我不确定这是否是我需要的东西.我需要在standalone.xml之外的某个地方使用Login Module声明新的安全域.

是否有任何简单的解决方案可以在war-Deployment中存储安全域声明和配置?

谢谢

Szy*_*ski 3

我认为目前不可能以简单的方式实现这一点(相关的 JIRA 问题)。但是,您可以使用jboss-as-maven-plugin作为解决方法:

<profiles>
        <profile>
            <id>deploy-security-domain</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.jboss.as.plugins</groupId>
                            <artifactId>jboss-as-maven-plugin</artifactId>
                            <version>7.4.Final</version>
                            <executions>
                              <execution>
                                <id>add-security-domain</id>
                                <phase>install</phase>
                                <goals>
                                   <!-- This should work in both "standalone" and "domain" mode -->
                                   <goal>execute-commands</goal>
                                </goals>
                                <configuration>
                                  <execute-commands>
                                    <batch>true</batch>
                                    <commands>
                                      <command>/subsystem=security/security-domain=MyDomain:add(cache-type=default)</command>
                                      <command>/subsystem=security/security-domain=MyDomain/authentication=classic:add(login-modules=[{"code"=>"Database","flag"=>"required","module-options"=>[("dsJndiName"=>"java:jboss/datasources/UserDB"),("principalsQuery"=>"select password from users where user_name=?"),("rolesQuery"=>"select role, 'Roles' from user_roles where user_name=?"),("hashAlgorithm"=>"SHA-256"),("hashEncoding"=>"base64")]}]</command>
                                    </commands>
                                  </execute-commands>
                                </configuration>
                              </execution>
                            </executions>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)

执行:

mvn install -P deploy-security-domain
Run Code Online (Sandbox Code Playgroud)

另一种选择是CLI脚本,它或多或少执行相同的操作。查看快速入门项目的示例。