2013-06-28 11 views
9

Annotations tarafından EJB-Security için JBoss 7 Güvenlik Alanları kullanıyorum. Örneğin.JBillian'da standalone.xml dosyasının dışındaki Güvenlik Alanını Bildirin 7.1.1

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

Şu anda Güvenlik Etki Alanları'nı standalone.xml içinde bildiriyorum. Bu küçük şeyler için doğrulayıcıdır ancak aynı JBoss Sunucusunda farklı projelerle bu güvenlik çocuğunu kullanmak istiyorum. Bu nedenle, standalone.xml dışındaki Güvenlik Etki Alanları'nı bildirmenin bir yolunu arıyorum. Savaş-Dağıtımı içinde Dağıtım Tanımlayıcılarını kullanmayı düşündüm.

this documentation'a göre bu mümkün olmalıdır. ama bu JBoss 5 için ve JBoss 7.1.1 ile çalışmıyor gibi görünüyor. Başlangıç ​​JBoss Ayrıştırıcı Hatası nedeniyle İstisna'yı atar. Ayrıca this question'u da gördüm ama ihtiyacım olan şey bu olduğundan emin değilim. Standalone.xml dışında bir yerde Oturum Açma Modülü ile yeni Security Domain bildirmem gerekiyor.

Güvenlik etki alanı Bildirimi ve birleştirme-yapılandırmada saklamak için herhangi bir basit çözümü var mı?

Teşekkür

cevap

3

Bunun basit bir şekilde (related JIRA issue) içinde şu anda mümkün olduğunu düşünmüyorum. Ancak, geçici bir çözüm olarak jboss-as-maven-plugin kullanabilirsiniz:

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

Yürütme:

mvn install -P deploy-security-domain 

Başka bir seçenek aşağı yukarı aynı şeyi yapan CLI senaryo olurdu. Örnek için this hızlı başlangıç ​​projesine göz atın.

İlgili konular