...
| Bloque de código | ||||||
|---|---|---|---|---|---|---|
| ||||||
package es.um.atica.XXXX.security.authentication;
...
import org.jboss.seam.annotations.Factory;
import es.um.atica.seam.security.authentication.Constants;
@Name( "authenticationManagerBean" )
@Scope( SESSION )
@Install( precedence = FRAMEWORK )
@BypassInterceptors
@Startup
public class AuthenticationManagerBean extends AbstractAuthenticationManagerBean {
...
@Factory( Constants.AUTHORIZATION_EXCEPTION_ON_USER_WITHOUT_UUID_NAME)
public boolean isThrowAuthorizationExceptionOnUserWithoutUuid() {
return true;
}
...
} |
o podemos declarar la factoría en el fichero components.xml:
| Bloque de código |
|---|
<factory name="es.um.atica.security.authentication.authorizationExceptionOnUserWithoutUUID" scope="EVENT" value="true"/> |
Ya estaría todo, si en la aplicación, usamos directamente la clase UmuIdentityLoader, o nuestro IdentityLoader, extiende la clase UmuIdentityLoader y no sobrescribimos el método loadDataLoginSuccessful() de dicha clase.
Si en nuestro componente IdentityLoader, extiende la clase UmuIdentityLoader, pero sobrescribe método loadDataLoginSuccessful() (o el que tiene la anotación @Observer(Identity.EVENT_LOGIN_SUCCESSFUL)), entonces tendremos que añadir la llamada al método checkUserData(), después de la carga de roles/permisos y antes de salir del método.
Si en nuestro componente IdentityLoader, NO extiende la clase UmuIdentityLoader, entonces tendremos que añadir en nuestra clase, la lógica de esta comprobación que esta en la clase UmuIdentityLoader.
Si activamos esta configuración y el usuario no tiene UUID, la aplicación hará logout de la sesión y redirigirá el navegador web a la pagina de error de usuario no autorizado.