2009-07-06 13 views
6

Estoy tratando de proteger un recurso en tomcat para que solo puedan acceder a él los "usuarios válidos" (aquellos con un nombre de usuario y contraseña válidos en el reino). No necesariamente pertenecen a un grupo en el reino. He intentado con muchas combinaciones de la directiva <security-constraint> sin éxito. ¿Algunas ideas?Restricción de seguridad de Tomcat para usuario válido

Respuesta

1

Hay varias implementaciones del reino en Tomcat: memoria, base de datos, JAAS y más. El más fácil de configurar (aunque no el más seguro) la memoria uno, que contiene un único archivo XML, por lo general bajo conf/tomcat-users.xml:

<tomcat-users> 
    <user name="tomcat" password="tomcat" roles="tomcat" /> 
    <user name="role1" password="tomcat" roles="role1" /> 
    <user name="both" password="tomcat" roles="tomcat,role1" /> 
</tomcat-users> 

La configuración reino está bajo el contexto, anfitrión o configuraciones de motor, así:

<Realm className="org.apache.catalina.realm.MemoryRealm" 
     pathname="conf/tomcat-users.xml" /> 

Luego, en el web.xml que ponen la siguiente definición:

<security-constraint> 
      <web-resource-collection> 
        <web-resource-name>MRC Customer Care</web-resource-name> 
        <url-pattern>/protected/*</url-pattern> 
      </web-resource-collection> 
      <auth-constraint> 
        <role-name>role1</role-name> 
      </auth-constraint> 
    </security-constraint> 

    <!-- Define the Login Configuration for this Application --> 
    <login-config> 
      <auth-method>DIGEST</auth-method> 
      <realm-name>YOUR REALM NAME</realm-name> 
    </login-config> 

    <security-role> 
      <description> 
       The role that is required to access the application. 
       Should be on from the realm (the tomcat-users.xml file). 
      </description> 
      <role-name>role1</role-name>     
    </security-role> 

la parte web.xml se toma (con un cambio leve) de una de nuestra web ap PD.

+0

En mi entorno particular estoy conectando a un ldap usando el JNDIRealm. El problema es que no puedo incluir grupos en el ldap y debo autenticarme solo con el nombre de usuario y la contraseña sin ningún rol. He intentado usar '' y ' *' sin éxito. – rmarimon

12

Además de la autenticación en restricciones que va a agregar a la seguridad en restricciones:

<auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 

necesita especificar la función de seguridad en la aplicación Web:

<security-role> 
     <role-name>*</role-name> 
    </security-role> 
+0

Voy a probar esto e informar. – rmarimon

+0

La adición de la etiqueta security-role fue la solución para nosotros. Gracias. –

+0

¿Alguna forma de agregar realmente la restricción fuera de web.xml? P.ej. agregar una restricción para todas las aplicaciones web además del Realm/Valve en context.xml? – cschooley

Cuestiones relacionadas