Deshabilitar la infraestructura de autorización en aplicaciones Fundeweb 2.x

Para deshabilitar la infraestructura de gestión de roles y usuarios deberemos realizar dos pasos:

  1. Modificaciones en el código Java: Eliminar las clases Java que mapean y acceden a base de datos y sobreescribir clase que cargue los permisos.
  2. Configurar la aplicación para que no busque roles para el usuario logueado.

A continuación describimos el proceso y los ficheros que hay que modificar para desactivar por completo esta funcionalidad.

Para que el validador de Hibernate no intente comprobar si las clases que mapean las tablas de roles existen en base de datos, deberemos eliminar el paquete es.um.atica.[nombre_proyecto].security.entities.

Tras esta modificación deberemos borrar también el paquete es.um.atica.[nombre_proyecto].security.control que es el que contiene los manejadores que cargan los valores de esas tablas y la clase UmuPermissionStore en es.um.atica.[nombre_proyecto].security

Una vez eliminadas todas estas clases estaremos en disposición de reconfigurar el proyecto para que no intente cargarlas y/o acceder a ellas.

Para evitar que se intenten cargar los permisos deberemos crear una clase wrapper que nos permitirá anular la funcionalidad por defecto de UmuIdentityLoader que intenta cargar los roles del usuario que se ha logueado.

Para ello, crearemos dentro del paquete es.um.atica.p.security.authentication una clase con el siguiente código

package es.um.atica.p.security.authentication;
 
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.intercept.BypassInterceptors;
 
import es.um.atica.seam.security.UmuIdentityLoader;
 
@Name("es.um.atica.security.umuIdentityLoader")
@Install(precedence = Install.APPLICATION)
@BypassInterceptors
public class [MiProyecto]IndentityLoader extends UmuIdentityLoader {
 
    @Override
    protected void  cargarDatosUsuario(){
        //No se carga ninguna información de autorización
    }
 
}

El primer paso que debemos dar es eliminar cualquier referencia a las clases que pudiera haber en nuestra aplicación, si ya hemos estado trabajando con ella. Una vez quitadas esas referencias deberemos comentar en el components.xml el siguiente código:

	<security:jpa-identity-store
		user-class="es.um.atica.[nombre_proyecto].security.entities.Usuarios"
		role-class="es.um.atica.[nombre_proyecto].security.entities.Roles" />
 
	<security:persistent-permission-resolver
		permission-store="#{umuPermissionStore}" />

A continuación, deberemos borrar del fichero menu_lateral.xhtml, en caso de que usemos la plantilla por defecto, el siguiente código:

<s:div>
    <ul class="nav nav-list">
	<li id="admin"><a href="#" class="dropdown-toggle"> 
            <i class="menu-icon fa fa-cogs" />
            <span class="menu-text">#{messages['menu.administracion']}</span>
  	    <i class="fa fa-chevron-circle-down drop-icon" />
	    </a> <b class="arrow" />
	    <ul class="submenu">
	    <li id="subMenuPerfiles">
                 <p:commandLink ajax="false" action="#{menuManagerBean.clickAndKillLastConversation('/paginas/admin/gestionUsuarios.xhtml')}">
                  #{messages['menu.sub.gestusu']} 
                 </p:commandLink>
             </li>
 	     </ul>
         </li>
</ul>
</s:div>
  • fdw2.0/fundeweb2.0/gt/deshabilitar_infraestructura_autorizacion.txt
  • Última modificación: 07/11/2017 10:46
  • (editor externo)