Válido también para aplicaciones FundeWeb v1.5.
Para poder gestionar la autorización de acceso a las páginas de la aplicación mediante la pasarela LoA, en nuestro caso es el CAS. El LoA se puede definir como el grado de confianza en la identidad de un individuo o entidad. Actualmente disponemos de tres niveles para el LoA:
- Bajo: para las autenticaciones SOLO con correo y contraseña.
- Medio: para la autenticación 2FA (correo + OTP), certificado electrónico o cualquier método de Cl@ve.
- Alto: Actualmente CAS no dispone de mecanismos para otorgar LoA alto.
Para poder configurar el LoA en una página, usaremos su fichero .page.xml o para un grupo de páginas mediante el fichero pages.xml global. Para poder especificar el nivel de LoA admitido por la página o grupo de paginas, usamos el elemento XML <loa-restrict>, que tiene dos atributos:
- level: el nivel de LoA mínimo para poder acceder al a página o grupo de páginas. Los valores admitidos son: undefined, low, medium, high. Por defecto, las páginas tienen el nivel undefinded.
- force: indica con valor true, que aunque el usuario tenga un nivel LoA solicitado en la propiedad level, en el primer acceso a esta página por parte del usuario, se fuerza a realizar el proceso para obtener el nivel de LoA necesario.
Ejemplo de uso de una página individual (fichero .page.xml) con restricción de acceso para usuarios que tengan un nivel LoA medio obtenido durante la autenticación:
<?xml version="1.0" encoding="UTF-8"?> <page xmlns="http://jboss.org/schema/seam/pages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jboss.org/schema/seam/pages http://jboss.org/schema/seam/pages-2.3.xsd"> <loa-restrict level="medium" /> </page>
Para este caso, si el usuario tiene un nivel de LoA medio, podrá acceder directamente a la página, sino, será redirigido a una página del CAS en la que se le ofrecerán el tipo de autenticaciones validas para obtener dicho nivel de LoA. Si durante el proceso se produce algún error, la aplicación lanzara la excepción AuthorizationException y por tanto una redirección a la vista /fundeweb/error_no_auth.xhtml, como con cualquier error de autorización que lance la aplicación.
Ejemplo de uso para un grupo de paginas (fichero pages.xml) con restricción de acceso para usuarios que tengan un nivel LoA medio obtenido durante la autenticación:
<?xml version="1.0" encoding="UTF-8"?>
<pages xmlns="http://jboss.org/schema/seam/pages"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/schema/seam/pages http://jboss.org/schema/seam/pages-2.3.xsd"
no-conversation-view-id="/${viewid.pagina.principal}"
login-view-id="/${viewid.pagina.login}">
...
<page view-id="/paginas/loam/*" login-required="true">
<loa-restrict level="medium" force="true" />
</page>
...
</pages>
Para este caso, aunque el usuario tiene un nivel de LoA medio, la primera vez que acceda a la página, necesitara pasar por una proceso de ratificación del nivel LoA para poder acceder directamente a la página. En este proceso de ratificación, será redirigido a una página del CAS en la que se le ofrecerán el tipo de autenticaciones validas para obtener dicho nivel de LoA. Si durante el proceso se produce algún error, la aplicación lanzara la excepción AuthorizationException y por tanto una redirección a la vista /fundeweb/error_no_auth.xhtml, como con cualquier error de autorización que lance la aplicación.
En el componente Identity, hemos añadido métodos para poder establecer y obtener el nivel de LoA actual del usuario.
IMPORTANTE: Si en la aplicación se utiliza el Rewrite Filter de URLs, entonces tenemos que añadir a los filtros del CAS, las rutas especificadas (en los atributos url-pattern o regexp-url-pattern) que aparecen en el atributo pattern de las etiquetas <rewrite> de los ficheros .page.xml o pages.xml. Sino, no será posible actualizar el valor del LoA del usuario. Esto se debe, a que el Rewrite-Filter, se ejecuta después del filtro de validación de tickets del CAS, que es el que valida la nueva autenticación y actualiza los nuevos atributos del CAS para el usuario.
Puedes obtener más información en: