Cómo Crear y Gestionar La Lista de Control de Acceso (ACL) en una Aplicación APEX 18.2

Por Clarisa Maman Orfali Oracle ACE director
Publicado en Diciembre 2018

Revisado por Francisco Riccio




Es muy común en cualquier tipo de aplicación que necesitemos controlar el nivel de acceso de los usuarios a ciertas páginas o componentes de la aplicación dependiendo el privilegio otorgado a un usuario dado, es por ello que vamos a crear una Página de Control de Acceso.

Para este ejemplo tenemos creada una aplicación con cuatro páginas: La página Inicio que muestra una lista de tipo cards con acceso a cada una de las paginas de la aplicación, la página Empleados que muestra un Informe Interactivo de la tabla EMPLOYEES, la página Departamentos que muestra un informe interactivo de la tabla DEPARTMENTS y finalmente la página de habilidades que muestra un gráfico con los datos de la tabla SKILLS.



Para este ejemplo vamos a tener tres niveles diferentes de usuarios, por ejemplo, usuarios que solo pueden ver la información, usuarios que pueden ver y además editar la información de la aplicación y por último el usuario de tipo administrador.





Crear Página de Control de Acceso



Cuando se implementa el control de acceso en una aplicación Oracle APEX, el mejor enfoque consiste en utilizar un esquema de autorización definido a nivel de aplicación.

Tenemos dos tipos de Páginas en APEX:

  • Las páginas de tipo componente proporcionan funcionalidad de nivel de página y se pueden agregar varias veces a una aplicación determinada. Algunos ejemplos son: informes, formularios, plugins, gráficos, calendarios, etc.

  • Las páginas de tipo función proporcionan funcionalidad de nivel de aplicación, y normalmente se agregan una vez por aplicación. Algunos ejemplos son: página Acerca de, Control de acceso, Generación de informes de actividades, Comentarios y Página de conexión.

Lo primero que vamos a realizar es la creación de una página de control de acceso mediante la ejecución del asistente para páginas de tipo función llamado “Control de Acceso”.

Desde la página de inicio de Oracle APEX de nuestra aplicación hacemos clic en el botón Crear Página y se abre el asistente de creación de páginas. Seleccionamos Tipo de Página: Función y luego hacemos clic en la página Control de Acceso:



Este asistente creará páginas para gestionar una lista de control de acceso. Rellenamos los siguientes atributos:

  • Número de Página: Introducimos un número de página inicial que no lo estemos utilizando. Esta función creará varias páginas que empiecen por el número especificado. El valor por defecto es el primer número de página que se puede dividir entre 10, que es mayor que el número de página máximo en la aplicación.
  • Grupo de Páginas: Identificamos el nombre del grupo de páginas que deseamos asociar a esta página. Los grupos de páginas ayudan a los desarrolladores a gestionar las páginas en una aplicación.
  • Preferencia de página Administración: Crear una nueva página (por que en nuestro demo no tenemos una página llamada Administración)
  • Nombre de Página de Administración: Administración
  • Página Administración Preferencia de Navegación: Crear Nueva Entrada de Menú de Navegación
  • Nueva Entrada de Menú de Navegación: Administración
  • Entrada de Menú de Navegación principal: - No se ha seleccionado ningún principal -




Hacemos clic en el botón Siguiente.



Confirmamos los atributos y hacemos clic en el botón Crear.





Ejecutar Página de Control de Acceso



Una vez que salimos del asistente, se abre directamente el Diseñador de Páginas de la página Administración. Necesitamos cerrar la sesión de la aplicación y volver a iniciar sesión para que los cambios se establezcan.

Ejecutamos la aplicación nuevamente e ingresamos a la página de Administración. Podemos ver que tenemos tres tipos de roles de usuarios:

  • Administrador (1)
  • Contribuyente (0)
  • Lector (0)




Añadir Usuarios a la Lista de Control de Acceso



Hacemos clic en el botón Agregar




Agregamos los siguientes usuarios a nuestra Lista de Control de Acceso:

- Jeraldine Audet (jeraldine.audet@aaal.com) - con previlegios de administrador (Administración).
- August Arouri (august.arouri@aaam.com) - con previlegios de edición (Contribuyente).
- Lovie Ritacco (lovie.ritacco@aaah.com) - con previlegios de solo lectura (Lector).

Ingresamos el primer usuario:
- Nombre de Usuario - ingresar Jeraldine Audet.
- Privilegio - Seleccionar Administrador.
- Hacemos clic en el botón Agregar Usuario.
- Hacemos clic en el botón Agregar

Ingresamos el siguiente usuario:
- Nombre de Usuario - ingresar August Arouri.
- Privilegio - Seleccionar Contribuyente.
- Hacemos clic en el botón Agregar Usuario.

Ingresamos el siguiente usuario:
- Nombre de Usuario - Ingresar Lovie Ritacco.
- Privilegio - Seleccionar Lector.
- Hacemos clic en el botón Agregar Usuario.



Ahora tenemos en nuestra aplicación los distintos usuarios con sus respectivos roles asignados.





Crear la Función de Autenticación



A continuación, para poder mostrar el ejemplo en acción es necesario hacer que los empleados en la tabla EMPLOYEES sean los usuarios de la aplicación (es a modo de ejemplo, nosotros podemos tener nuestra propia tabla de usuarios).

Para lograr esto, vamos a crear una función de autenticación simple en el esquema de autenticación actual. Para crear la contraseña, indicamos que sea la columna EMAIL en mayúscula.


Para crear la función de autenticación:

En la página de inicio de Oracle APEX, hacemos clic en el icono Taller de SQL y luego hacemos clic en el ícono Comandos SQL, e ingresamos el siguiente código:

CREATE OR REPLACE FUNCTION custom_auth (
	p_username IN VARCHAR2,
	p_password IN VARCHAR2)
RETURN BOOLEAN IS
BEGIN
	FOR c1 IN (SELECT 1
		FROM EMPLOYEES
		WHERE upper(name) = upper(p_username)
		AND upper(email) = upper(p_password))
	LOOP
	RETURN TRUE;
	END LOOP;
RETURN FALSE;
END;
/

Ejecutamos la consulta y de ese modo se crea la función dentro del esquema de la aplicación.





Asignar nuestro propio esquema personalizado de autenticación



Nos dirigimos a la página de Inicio de la Aplicación

  • Hacemos clic en Componentes Compartidos
  • En la sección Seguridad hacemos clic en el enlace Esquemas de Autenticación
  • En este momento tenemos el esquema Application Express Authentication - Actual en uso, vamos a cambiarle el nombre a Esquema Personalizado
  • En tipo de Esquema seleccionamos Personalizado de la Lista de Selección
  • En Nombre de la Función de Autenticación ingresamos: custom_auth
  • Hacemos clic en el botón Aplicar Cambios




Asociar Esquema de Autorización a la Aplicación



Desde la página de inicio de la aplicación, hacemos clic en el botón Editar Propiedades de la Aplicación.

Luego hacemos clic en la ficha Seguridad y en la sección Autorización seleccionamos:
Esquema de Autorización: Derechos de lector
Ejecutar en páginas Públicas: No
Origen para esquemas de grupos o roles: Asignaciones de rol de usuario de control de acceso.






Asociar Privilegios de Edición en la Aplicación



En este ejemplo vamos a asociar el icono de edición (lapicito) del Informe Interactivo de Empleados que sólo se active cuando el usuario tenga privilegio de edición y en el caso de que el usuario sólo tenga privilegios de solo lectura se esconda el icono de edición del Informe Interactivo.

Ingresamos a la página del Informe Interactivo de Empleados desde el diseñador de páginas y hacemos clic en Atributos del Informe Interactivo y pasamos al panel de propiedades de la derecha y seleccionamos en Esquema de Autorización → Derechos de contribución.



De igual modo asociamos los permisos de edición al Botón CREATE y aplicamos los cambios.

En el caso de la página del formulario de edición de empleados, en la sección de seguridad de la página seleccionamos el esquema de autorización como “Derechos de Contribución”.





Restringir Acceso a la Página de Administración



Para que la página de administración esté disponible solo para los usuarios con privilegios de administración necesitamos restringir el acceso a dicha página.

Abrimos la página desde el diseñador de páginas y hacemos clic en el título de la página en el panel izquierdo de Presentación, luego en el panel de la derecha de propiedades, en la sección de Seguridad, seleccionamos Esquema de Autorización → control de acceso: administrador y aplicamos los cambios.





Asociar el Menú de Navegación Administración al privilegio de Administrador



Ingresamos a la página de inicio de la aplicación y hacemos clic en Componentes Compartidos, en la sección de Navegación hacemos clic en el enlace “Menú de Navegación”, luego hacemos clic en el enlace “Escritorio Menú de Navegación” y hacemos clic en el enlace Administración:



Hacemos clic en la ficha de Autorización y en Esquema de Autorización seleccionamos → Derechos de administración, luego aplicamos los cambios.





Probar los Distintos Niveles de Acceso a la Aplicación



Ahora es momento de probar nuestra aplicación y verificar los controles de acceso de cada usuario.

Ingresamos con el usuario que tiene solo privilegios de visualización:

Nombre de usuario: Lovie Ritacco
Contraseña: lovie.ritacco@aaah.com

Podemos ver que el usuario Lovie Ritacco no visualiza el menú de Administración y si navegamos por la página del Informe interactivo de Empleados, también vemos que no aparece el ícono para editar los registros del informe ni tampoco aparece el botón de CREAR.




Ahora vamos a desconectarnos de la aplicación e iniciar sesión con el usuario que tiene privilegios de edición.

Nombre de usuario: August Arouri
Contraseña: august.arouri@aaam.com

El usuario August Arouri tampoco puede ver la página de administración, pero sí puede editar el informe interactivo de Empleados.




Finalmente nos desconectamos y nos volvemos a conectar pero con el usuario administrador.

Nombre de usuario: Jeraldine Audet
Contraseña: jeraldine.audet@aaal.com

Podemos ver que el usuario Jeraldine Audet tiene acceso a la página de Administración y además tiene todas las capacidades tanto de visualización como edición en la aplicación.





Conclusión


En este artículo hemos podido ver cómo implementar en APEX la Lista de Control de Acceso. Podemos crear funciones de autenticación personalizadas según los requerimientos de nuestra aplicación. Aquí he presentado un simple ejemplo usando la tabla de Employees como usuarios de la aplicación, pero podemos tener nuestra propia tabla de usuarios y las contraseñas con un nivel de seguridad adecuada y encriptada en la base de datos.




Clarisa Maman Orfali es fundadora y CEO de ClarTech Solutions Inc. Se ha convertido en Oracle ACE hace algunos años, tiene más de 15 años de experiencia en el desarrollo y la capacitación en tecnologías de la información. Hace unos años descubrió la belleza de Oracle Application Express (APEX) y se ha especializado en esa área. Ella también es una Co-Fundadora y Directora del Argentina Oracle User Group (AROUG) y ha participado activamente en la organización de grandes y populares eventos. Ella tiene una gran pasión por las tecnologías de Oracle y quiere ampliar esa pasión e influencia transfiriendo su conocimiento y experiencia a la totalidad de las comunidades de Oracle América Latina y en todo el mundo.

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.