Seguridad en Aplicaciones Web Fusion - Oracle ADF (Parte II)

Por Marcelo Vásquez
Publicado en noviembre 2011


Los artículos que conforman esta serie son los siguientes:

A continuación veremos cómo configurar la seguridad en nuestra aplicación Web Fusion (Oracle ADF) para que utilice la seguridad definida en Oracle Weblogic.

Esquema de seguridad

La aplicaciones desarrolladas con Oracle ADF y Oracle jDeveloper posee un integración casi transparente con la seguridad definida en Oracle Weblogic, esta integración se realiza mediante Oracle ADF Security.

Oracle ADF Security es el framework por defecto para proveer autentificación y autorización definiendo de esta manera las políticas de seguridad para usar los recursos ADF por parte de los usuarios.

Una característica importante es que Oracle ADF Security está basado en Java Authentication and Authorization Service (JAAS). A continuación mostramos el esquema de integración de Oracle ADF Security en las aplicaciones Web Fusion para usar la seguridad definida en Oracle Weblogic.

 

Oracle ADF Security

 

En la figura se indica claramente como se produce la integración e interacción a nivel conceptual, recordemos que la aplicación ADF está desplegada en el Weblogic.

Como podemos observar debemos configurar ADF Security en nuestra aplicación, previamente debemos tener configurado nuestro provider de autenticación en el Weblogic (ver el artículo anterior).

Generalmente tenemos roles empresariales (definidos en el provider) y en nuestra aplicación tenemos roles de aplicación. Mediante el archivo jazn-data.xml haremos el mapeo entre dichos roles, de esa manera se produce la integración.

En resumen, en nuestra aplicación tenemos las ADF Resources(pages, pages definition, task-flow y entities), en el jazn-data.xml definimos que justamente que roles de aplicación utilizan los ADF Resources y se define como están relacionados los Application Roles con los Enterprise Roles.

Vamos a ver un paso a paso la forma de habilitar y configurar el ADF Security en nuestra aplicación usando una aplicación de ejemplo.

Configuración paso a paso


La habilitación de la seguridad puede realizarse en cualquier momento, pero yo recomiendo hacerlo una vez que tenemos avanzo el desarrollo, porque de esa manera desarrollamos libremente y luego podemos con las pantallas ya funcionado, habilitar la seguridad.

Paso 1: Habilitar ADF Security

Una vez que nos aseguramos de que la aplicación funciona correctamente, vamos a realizar los siguientes pasos para habilitar la seguridad.

La seguridad se habilita sobre el proyecto ViewController, tal como se indica en la siguiente figura.

 

ViewController

 

Nos aparecerá un asistente de ADF Security con las siguientes pantallas:

 

asistente de ADF Security

 

Debemos seleccionar el modelo de seguridad a utilizar para nuestra aplicación, dejamos seleccionada la 1ra opción, es la opción por defecto para las aplicaciones ADF web. Damos al botón siguiente.

 

aplicaciones ADF web

 

En este paso nos pide que seleccionemos el tipo de autentificación, usaremos para este ejemplo la básica y en un futuro artículo podemos ver la autentificación con una pantalla personalizada de usuario y clave (Form-Based Authentication).

Bien, la autentificación básica nos proveerá un promp para ingresar usuario y clave, ese promp es el propio del navegador, lo veremos en el momento de probar el ejemplo. Luego del presionar el botón Next nos aparece el siguiente paso.

 

autentificación

 

En este paso podemos indicar que automáticamente el asistente otorge los permisos a los ADF Resources que tengamos en el proyecto, o podemos indicarle no asigne ningún permiso y así nosotros podremos darles los permisos según nuestra definición. Avanzamos con el botón Next.

 

permisos a los ADF Resources

 

En el penúltimo paso indicamos que debe hacer luego de autentificar, en nuestro caso se redirigirá a la pantalla de empleados.jspx, podemos hacer que genere una página por defecto. Presionamos el botón Next.

 

genere una página por defecto

 

En el último paso nos aparece un resumen de todas las operaciones que realizará. Presionamos el botón Finish para que habilite la seguridad.

Paso 2: Mapear los roles y asignar los permisos

A continuación debemos configurar los permisos y mapear los roles de empresa y de aplicación, para ello vamos a la siguiente opción.

 

configurar los permisos y mapear los roles de empresa

 

Se abrirá el siguiente asistente.

 

asistente

 

Bien, prestemos atención, vemos que ese asistente es para configurar el jazn-data.xml del que habíamos hablado antes.

En este archivo podemos configurar varios aspectos importantes, mencionamos a continuación los que necesitamos para este ejemplo:

Users: en esta opción podemos definir usuario que se crearán al realizarse el deploy, en particular si tenemos todo bien configurado no será necesario agregar ninguno y podremos usar los definimos en el provider en el Weblogic.
Enterprise Roles: en esta opción definimos el nombre de los roles empresariales que están definidos en el provider, por ejemplo EADMIN, EMARKETING y ESOPORTE, como los muestra la figura siguiente el provider en el Weblogic.

 

provider en el Weblogic

 

 

Luego agregamos los roles de la aplicación y realizamos el mapeo con los roles de la empresa, tal como se indica en la figura siguiente

 

roles de la aplicación

 

Resources Grants: en esta opción definimos los que roles tienen acceso a que Pages, Page Definitions, Task-flows y Entities, observen la siguiente figura en donde se define:
1. EjAdmin tendrá permisos a task-flow-empleados y todos los demás recursos, page y page definitions.
2. EjSoporte y EjMarketing tendrá acceso a todos los recursos excepto abmEmpleados.jsff que es el page-fragment del abm de empleados.

 

page-fragment

 

Un detalle importante, index.jspx es una pantalla que no tiene page-definition y por tal razón es de libre acceso ya que no posee información que recupere mediante los bindings.

Entitlement Grants: en esta opción podemos agrupar recursos bajo un nombre y ese grupo asignárselo a los roles de aplicación esto es sumamente útil cuando tenemos muchas pantallas.

Paso 3: Desplieque y Prueba

En la configuración de la aplicación hay que tener en cuenta algunas propiedades que uno puede modificar al realizar el despliegue en el Weblogic, en la siguiente figura se muestra dichas opciones.

 

Weblogic

 

Finalmente corremos nuestra aplicación e ingresamos como mvasquez(rol EADMIN) y el usuario oracle(rol ESOPORTE y EMARKETING)

 

Correr la aplicación

 

Con el usuario mvasquez podemos acceder a todas las opciones.

 

acceder a todas las opciones

 

Con el usuario Oracle podemos acceder a la lista, pero al acceder al abm nos sale el siguiente error:

Caused by: oracle.adf.controller.security.AuthorizationException: 
ADFC-0619: Authorization check failed: 'oracle.jbo.uicli.binding.JUFormDef@1bc8485' 'VIEW'.

Este error indica que no tenemos autorización para acceder a esa pantalla.

Más adelante mostraremos como personalizar este tipo de mensajes.

Ventajas


Mencionamos alguna de las ventajas:

• Bajo nivel de acoplamiento con la seguridad definida en el provider
• Gran control para definir la relación entre los roles de empresas y roles de aplicación
• Gran control para definir los accesos a los recursos de ADF en nuestra aplicación
• Posibilidad de personalizar aspectos de la seguridad
• Basado en un estándar JAAS




Publicado por Marcelo Vásquez. Especialista en Java y Oracle ADF, posee más de 13 años de experiencia en tecnologías ORACLE. Se desempeña como consultor, arquitecto y capacitador en JSDK, JEE, Frameworks y Oracle ADF.