Written by Clarisa Maman Orfali 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 tres páginas: La página Inicio que muestra un grupo de regiones, la página Empleados que muestra un Informe Interactivo de la tabla EMP y la página Departamentos que muestra un informe interactivo de la tabla DEPT. 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 . 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 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 la página Control de Acceso: - En Páginas Modo de Página: Normal Hacemos clic en el botón Siguiente. - En Menú de Navegación Preferencia de Navegación: Crear nueva entrada del menú de navegación Nueva Entrada del 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. - En Confirmación Hacemos clic en el botón Crear Ejecutar Página de Control de Acceso Ejecutamos la página y podemos ver que tenemos 2 regiones, en la cual en la primera región tenemos 4 niveles de control de acceso a la aplicación, por defecto está seleccionado Acceso completo a todo, es decir no se usa el ACL. - Acceso completo a todos, no se utiliza la lista de control de acceso (ACL). - Acceso restringido. Sólo se permite a los usuarios definidos en la lista de control de acceso. - Sólo Lectura pública. Privilegios de edición y administración por lista de control de acceso. - Sólo acceso administrativo. En la región de abajo tenemos la lista de control de Acceso para añadir, suprimir o actualizar los diferentes usuarios de nuestra aplicación. Vamos a seleccionar la segunda opción à Acceso restringido: Sólo se permite a los usuarios definidos en la lista de control de acceso y hacemos clic en el botón Definir Modo de la Aplicación. Añadir Usuarios a la Lista de Control de Acceso Vamos a agregar los siguientes usuarios a nuestro ACL: - BLAKE (MANAGER) - con previlegios de administrador. - SCOTT (ANALYST) - con previlegios de edición. - TURNER (SALESMAN) - con previlegios de visualización. Para añadir usuarios a la Lista de Control de Acceso: Dentro de la región Lista de Control de Acceso, hacemos clic en el botón Agregar Usuario y una nueva fila en blanco de usuario se va a mostrar. - Ingresamos el primer usuario: - Nombre de Usuario - ingresar BLAKE . - Privilegio - Seleccionar Administrador. - Hacemos clic en el botón Aplicar Cambios. - Hacemos clic en el botón Agregar Usuario y una nueva fila en blanco aparecerá para ingresar el siguiente usuario. - Ingresamos el siguiente usuario: - Nombre de Usuario - ingresar SCOTT. - Privilegio - Seleccionar Editar. - Hacemos clic en el botón Aplicar Cambios. - Hacemos clic en el botón Agregar Usuario y una nueva fila en blanco aparecerá para ingresar el siguiente usuario. - Ingresamos el siguiente usuario: - Nombre de Usuario - Ingresar TURNER . - Privilegio - Seleccionar Ver. - Hacemos clic en el botón Aplicar Cambios. 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 EMP 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 JOB 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 EMP WHERE upper(ename) = upper(p_username) AND upper(job) = 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 APEX - 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 à control de acceso: visualización y hacemos clic en el botón Aplicar Cambios. Asociar Privilegios de Edición en la Aplicación En este ejemplo vamos a asociar el icono de edición de los informes interactivos de EMP y DEPT que sólo se activen cuando el usuario tenga privilegio de edición y en el caso de que el usuario sólo tenga privilegios de visualización se esconda el icono de edición de los informes interactivos. 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 à control de acceso: edición. Y aplicamos los cambios haciendo clic en el botón Guardar. De igual modo asociamos los permisos de edición al Botón CREATE y aplicamos los cambios. Realizamos lo mismo para el Informe Interactivo Departamentos y posteriormente para el botón CREATE. 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 à control de acceso: administrador , 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: TURNER Contraseña: SALESMAN Podemos ver que el usuario TURNER 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: SCOTT Contraseña: ANALYST El usuario SCOTT tampoco puede ver la página de administración pero sí puede editar los informes interactivos. Finalmente nos desconectamos y nos volvemos a conectar pero con el usuario administrador. Nombre de usuario: BLAKE Contraseña: MANAGER Podemos ver que ahora la página de Administración está visible para el usuario y 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. Es lógico que la función de autenticación es simplemente un ejemplo, ya que podemos tener nuestra propia tabla de usuarios y las contraseñas con un nivel de seguridad adecuada y encriptada en la base de datos. Si quieres saber un poco más sobre como “Crear Esquema de Autenticación Personalizado en Oracle APEX 5.0” aquí te dejo el link a mi artículo pasado.
↧