我正在使用JBoss 7上的安全域来实现注释。例如。
@RolesAllowed({"User", "Admin"})
目前,我在standalone.xml中声明安全域。这是对小事情的认可,但是我想在同一个JBoss服务器上用不同的项目来使用这个安全性的孩子。因此,我正在寻找一种在standalone.xml之外声明安全域的方法。我想过在战争部署中使用部署描述符。
根据这份文件的说法,这应该是可能的。但这是针对JBoss 5的,而且似乎无法使用JBoss 7.1.1。启动JBoss会因解析器错误引发异常。我也见过这个问题,但我不确定这是否是我需要的东西。我需要在standalone.xml之外的某个地方用登录模块声明新的安全域。
是否有简单的解决方案来存储战争部署中的安全域声明和配置?
谢谢
发布于 2013-08-07 19:12:00
我不认为这在目前是不可能的一个简单的方式(相关的JIRA问题)。但是,您可以使用jboss 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>
处决:
mvn install -P deploy-security-domain
https://stackoverflow.com/questions/17364524
复制相似问题