2013-06-28 9 views
9

Używam domen bezpieczeństwa w JBoss 7 dla EJB-Security przez adnotacje. Na przykład.Zadeklaruj domenę bezpieczeństwa poza standalone.xml na JBoss 7.1.1

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

Obecnie deklaruję Domeny bezpieczeństwa w standalone.xml. Jest to aprobata dla małych rzeczy, ale chciałbym użyć tego dzieciaka bezpieczeństwa z różnymi projektami na tym samym serwerze JBoss. Dlatego szukam sposobu, aby zadeklarować Domeny Bezpieczeństwa poza plikiem standalone.xml. Myślałem o używaniu deskryptorów wdrażania w trakcie wdrażania wojny.

Zgodnie z this documentation powinno to być możliwe. ale to jest dla JBoss 5 i wydaje się nie działać z JBoss 7.1.1. Uruchomienie JBoss zgłasza wyjątek z powodu błędu parsera. Widziałem też this question, ale nie jestem pewien, czy to jest to, czego potrzebuję. Muszę zadeklarować nową domenę bezpieczeństwa z modułem logowania gdzieś poza standalone.xml.

Czy istnieje jakieś proste rozwiązanie: do przechowywania Deklaracji domeny bezpieczeństwa i współfirmowania podczas wdrażania wojny?

Dzięki

Odpowiedz

3

Nie sądzę, jest to możliwe w tej chwili w prosty sposób (related JIRA issue). Jednakże, można użyć jboss-as-maven-plugin jako obejście:

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

Wykonanie:

mvn install -P deploy-security-domain 

Inną opcją byłoby CLI skrypt, który robi mniej więcej to samo. Sprawdź przykładowy projekt szybkiego uruchomienia this.

Powiązane problemy