2008-11-26 13 views
4

Quelqu'un a-t-il l'expérience de regrouper une définition de source de données (-ds.xml) + login-config.xml en tant qu'archive de service dans jboss? Je me suis battu avec cela pendant un certain temps en vain. Je cherche juste quelques indications sur la façon dont je devrais poser le .sar. Je veux que le .sar vive finalement dans un .ear. Tous les pointeurs grandement appréciés!Déploiement d'une source de données avec le module de connexion JAAS en tant que .sar dans jboss

Répondre

4

Cette tâche est relativement simple.

Votre fichier EAR doit avoir suivant la mise en page:

my-app.ear 
    |+ META-INF 
     |+ applications.xml and jboss-app.xml 
    |+ myapp.war 
    |+ myapp.jar 
    |+ lib 
    |+ my-ds.xml 
    |+ my-login-module-service.xml 

où ma-ds.xml contient la définition de source de données comme d'habitude. my-login-module-service.xml définit MBean en fonction de la classe DynamicLoginConfig. Ces modules sont ensuite référencés dans les jboss-app.xml (descripteur de déploiement JBoss personnalisé) comme grupe ici:

<jboss-app> 
<module> 
    <service>my-login-module-service.xml</service> 
</module> 

<module> 
    <service>my-ds.xml</service> 
</module> 
</jboss-app> 

manière la plus simple comment créer le module de connexion définition est d'utiliser le support pour les documents XML intégrés comme les valeurs des attributs. Une telle configuration (my-login-module-service.xml) se présente comme suit:

<server> 
    <mbean code="org.jboss.security.auth.login.DynamicLoginConfig" 
     name="jboss:service=DynamicLoginConfig"> 
     <attribute name="PolicyConfig" serialDataType="jbxb"> 
     <jaas:policy xsi:schemaLocation="urn:jboss:security-config:4.1 resource:security-config_4_1.xsd" xmlns:jaas="urn:jboss:security-config:4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <jaas:application-policy name="userinrole"> 
      <jaas:authentication> 
       <jaas:login-module code="org.jboss.security.auth.spi.XMLLoginModule" flag="required"> 
       <jaas:module-option name="my-policy-123"> 
       <ur:users xsi:schemaLocation="urn:jboss:user-roles:1.0 resource:user-roles_1_0.xsd" xmlns:ur="urn:jboss:user-roles:1.0"> 
        <ur:user name="admin" password="admin123"> 
         <ur:role name="MyUserRole"></ur:role> 
         <ur:role name="AdminUser"></ur:role 
        </ur:user> 
       </ur:users> 
       </jaas:module-option> 
       <jaas:module-option name="unauthenticatedIdentity">guest</jaas:module-option> 
       </jaas:login-module> 
     </jaas:authentication> 
     </jaas:application-policy> 
     </jaas:policy> 
    </attribute> 
     <depends optional-attribute-name="LoginConfigService">jboss.security:service=XMLLoginConfig</depends> 
     <depends optional-attribute-name="SecurityManagerService">jboss.security:service=JaasSecurityManager</depends> 
    </mbean> 
</server> 

Vous pouvez vérifier le déploiement réussi en utilisant le haricot JNDIVIew (java:/jaas/ma-politique-123 dans cet exemple).

Pour le déploiement, y compris les classes personnalisées, il est préférable de choisir le déploiement d'archive SAR avec le code personnalisé. Dans ce cas, vous pouvez séparer la définition MBean et configuration module de connexion (META-INF/jboss-service.xml):

<server> 
<mbean code="org.jboss.security.auth.login.DynamicLoginConfig" name="jboss:service=DynamicLoginConfig"> 
    <attribute name="AuthConfig">META-INF/login-config.xml</attribute> 
    <depends optional-attribute-name="LoginConfigService">jboss.security:service=XMLLoginConfig</depends> 
    <depends optional-attribute-name="SecurityManagerService">jboss.security:service=JaasSecurityManager</depends> 
</mbean> 
</server> 

META-INF/login-config.xml contiendra alors la configuration de votre politique. J'utilise cette approche sur JBoss AS 4.x.