Para realizar la suplantación en aplicaciones que no la tienen, seguiremos los siguientes pasos:
- Descargamos el fichero
en la raíz del proyecto, y los descomprimimos con Extraer aquí.View file name suplantacion_arqetipo_v2.0.19.zip height 250 - Hay que revisar la página tenga algunos suplantarUsuario.xhtml, 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 acceder a ella.
La suplantación de identidad es el proceso por el que un usuario perteneciente a una aplicación, asume el papel de otro usuario (también perteneciente a la aplicación). Tras este proceso, las acciones que realice el suplantador y opciones que visualice, serán las que estén disponibles para el suplantado. Quedando registrado el suplantado como el usuario que las realiza en el log.
Para hacer una suplantación de identidad en Fundeweb 2.0, bastará con llamar al método emulateLoginSeam situado en la clase UmuIdentity, pasándole como parámetro el usuario que se quiere suplantar.
| Bloque de código | ||||
|---|---|---|---|---|
| ||||
/**
* Emula un Login en SEAM ya que estamos Loggeados en el CAS
* @param user usuario que queremos suplantar
*/
public void emulateLoginSeam(String user) {
preAuthenticate();
this.clean(true);
// Metemos el principal en el identiy la unica manera es esta (simula un login de Seam)
this.acceptExternallyAuthenticatedPrincipal(new SimplePrincipal(user));
// El credential sin SESSION directo
getCredentials().setUsername(user);
postAuthenticate();
if (Events.exists()) {
Events.instance().raiseEvent(EVENT_LOGIN_SUCCESSFUL);
}
} |
Tras esta llamada, se llamará inmediatamente, en el UmuIdentityLoader, a toda la carga de datos asociados a ese usuario (al estar anotada por el método @Observer(“org.jboss.seam.security.loginSuccessful”)
En caso de que hayamos añadido algo al método loadDataAuthentication como se explica en la guía de autorización en habría modificar el código para hacer estas tareas antes de llamar al método emulateLoginSeam.
| Bloque de código | ||||||
|---|---|---|---|---|---|---|
| @In UmuIdentity identity;
public void suplantarIdentidad(){
....
//Métodos previos a la emulación
....
identity.emulateLoginSeam(user);
}||||||