2013-06-28 11 views
9

Utilizzo domini di sicurezza su JBoss 7 per EJB-Security per annotazioni. Per esempio.Dichiarare il dominio di sicurezza al di fuori di standalone.xml su JBoss 7.1.1

@RolesAllowed({"User", "Admin"}) 

Attualmente dichiaro i domini di sicurezza in standalone.xml. Questo è un approccio appropriato per le piccole cose, ma mi piacerebbe utilizzare questo ragazzo di sicurezza con diversi progetti sullo stesso server JBoss. Pertanto sto cercando un modo per dichiarare i domini di sicurezza al di fuori del file standalone.xml. Ho pensato di usare Deployment Descriptors all'interno del war-Deployment.

Secondo this documentation ciò dovrebbe essere possibile. ma questo è per JBoss 5 e sembra non funzionare con JBoss 7.1.1. L'avvio di JBoss genera un'eccezione a causa di un errore del parser. Ho anche visto this question ma non sono sicuro che questa sia la cosa di cui ho bisogno. Devo dichiarare il nuovo dominio di sicurezza con il modulo di login da qualche parte al di fuori di standalone.xml.

Esiste una soluzione semplice per archiviare la Dichiarazione di dominio di sicurezza e la cofigurazione in Distribuzione di guerra?

Grazie

risposta

3

Non credo che questo sia possibile in questo momento in modo semplice (related JIRA issue). Tuttavia, è possibile utilizzare jboss-as-maven-plugin come una soluzione:

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

Esecuzione:

mvn install -P deploy-security-domain 

Un'altra opzione sarebbe uno script CLI, che fa più o meno la stessa cosa. Guarda il progetto quickstart this per un esempio.