====== Suplantación de identidad ======
--- //[[pedrody@um.es|PEDRO DELGADO YARZA]] 2014/01/29 13:55//
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
/**
* 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á inmediatemente, 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 [[fdw2.0:fundeweb2.0:gt:autorizacion_en_aplicaciones_fundeweb|guia de autorizacion]] en habría modificar el código para hacer estas tareas antes de llamar al método **emulateLoginSeam**.
@In UmuIdentity identity;
public void suplantarIdentidad(){
....
//Métodos previos a la emulación
....
identity.emulateLoginSeam(user);
}