2011-10-14 1 views
0

J'ai un serveur d'application Java EE (jboss-eap-4.3) et plusieurs .wars qui constituent une application web plus grande. L'idée est qu'un .war peut être exécuté séparément ou lié à un autre .war. Comme ils font tous partie de la même application, nous ne voulons pas présenter plusieurs connexions.Comment partager la contrainte de sécurité entre .wars?

Je souhaite configurer les fichiers .wars afin qu'ils partagent tous les mêmes contraintes de sécurité et rôles de sécurité. En fait cette partie de web.xml:

<security-constraint> 
    <web-resource-collection> 
     <url-pattern>/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Admin</role-name> 
    </auth-constraint> 
<security-constraint> 

<security-role> 
    <role-name>Admin</role-name> 
</security-role> 

<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>WebApp</realm-name> 
</login-config> 

Nos rôles ont changé souvent ces derniers temps et nous ajoutons de nouveaux .wars périodiquement ainsi. De plus, nous modifions la méthode d'authentification en fonction de l'environnement de déploiement, ce qui ajoute une autre raison à modifier. Idéalement, je voudrais un moyen de rompre la partie sécurité du fichier web.xml afin qu'il puisse être «hérité» par les autres. Je pensais que les royaumes pourraient être un bon endroit pour chercher ceci, mais je n'ai rien trouvé de prometteur.

Notez qu'il existe encore d'autres applications Web dans ce conteneur avec un domaine de sécurité complètement différent, donc un paramètre global pour tomcat peut ne pas être approprié.

+0

Je pense que l'authentification unique vient à l'esprit, vous pouvez également regarder http://code.google.com/googleapps/domain/sso/saml_reference_implementation.html –

Répondre

0

Pas une bonne réponse, mais j'ai fini par automatiser le travail sale avec des macrodefs comme celui ci-dessous.

<!-- 
    | Take a "plain" web.xml and add security settings to it. 
    | This will add BASIC authentication with Admin, Operator, and Guest role access 
    | 
    --> 
    <taskdef resource="net/sf/antcontrib/antlib.xml" /> 
    <macrodef name="addSecurityToWeb.xml"> 
     <attribute name="file"/> 
     <sequential> 
     <if> 
      <not> 
       <isfileselected file="@{file}"> 
        <contains text="login-config" ignorewhitespace="true"/> 
       </isfileselected> 
      </not> 
      <then> 
       <replace file="@{file}"> 
        <replacetoken><![CDATA[</web-app>]]></replacetoken> 
        <replacevalue> 
    <![CDATA[ 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Protected Area</web-resource-name> 
      <url-pattern>/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>Admin</role-name> 
     </auth-constraint> 

     <transport-guarantee>NONE</transport-guarantee> 
    </security-constraint> 

    <!-- Security roles referenced by this web application --> 
    <security-role> 
     <role-name>Admin</role-name> 
    </security-role> 

    <login-config> 
     <auth-method>BASIC</auth-method> 
     <realm-name>WebApp</realm-name> 
    </login-config> 
</web-app> 
    ]]>  
        </replacevalue> 
       </replace> 
      </then> 
     </if> 
     </sequential> 
    </macrodef> 
Questions connexes