Para realizar la impersonación en aplicaciones que no la tienen, seguiremos los siguientes pasos:
- Descargamos el fichero suplantacion_arqetipo_v2.0.19.zip en la raíz del proyecto, y los descomprimimos con Extraer aquí.
- Hay que revisar la página suplantarUsuario.xhtml, probablemente, tenga algún problema visual, ya que esta basado en el tema corporativo.
- Hay que revisar el fichero suplantarUsuario.page.xml, para establecer en el <restrict>, la expresión EL válida, que permite a los usuarios con permisos/roles válidos, acceder a ella.
Otro elemento a tener en cuenta en la impersonación, son los datos del usuario que va a suplantar, que hay almacenados en el Identity / UmuIdentity. Tenemos disponible en la clase UmuIdentity, los métodos:
- protected void backupProperties( Map<String, Object> identityProperties )
- protected void restoreProperties( Map<String, Object> identityProperties )
que permiten guardar y restaurar esos datos, como por ejemplo el UUID del usuario. En la llamada al método supplantUser() se llamará el método backupProperties(), y en la llamada al método restoreSupplanterUser() se llamará el método restoreProperties().
Estos métodos para backup/restore, se pueden sobrescribir para añadir las propiedades a salvar/restaurar, después de la suplantación. Solo son necesarias salvar/restaurar, las propiedades que no se cargan cuando se llama al método UmuIDentityLoader.loadDataLoginSuccessful(), que se ejecuta automáticamente al lanzar la aplicación el evento Identity.EVENT_LOGIN_SUCCESSFUL. Si se sobrescriben los métodos de backup/restore, siempre deben incluir una llamada al método del padre, ejemplo:
@Override
protected void backupProperties( Map<String, Object> identityProperties ) {
super.backupProperties( identityProperties );
// salvar propiedades especificas de mi aplicacion
identityProperties.put( "miPropiedad", miPropiedad );
...
}
@Override
protected void restoreProperties( Map<String, Object> identityProperties ) {
super.restoreProperties( identityProperties );
// restaurar propiedades especificas de mi aplicacion
miPropiedad = identityProperties.get( "miPropiedad" );
...
}
1 comentario
Juan Luis Serradilla Amarilla
nov 10, 2025Juan Miguel Bernal González , Santa Cruz Martinez Moñino y Usuario desconocido (pedro.delgado@ticarum.es) , en lugar del término "suplantación de identidad", hay que usar "impersonación", siempre en el contexto de las pruebas necesarias para depurar fallos de aplicación complejos, que requieren probar una conexión con el usuario que tiene el problema... Usuario desconocido (pedro.delgado@ticarum.es) , revisa tú la redacción de esta guía. Gracias.