Una vez que los usuarios se autentiquen en las aplicaciones APEX, podrán ejecutar cualquier página y ver todos los componentes, a menos que haya restricciones establecidas. La mayoría de las veces, estas restricciones se implementarán utilizando esquemas o condiciones de autorización. Los esquemas de autorización son componentes APEX que actúan como roles. Se asocian con un componente APEX en un lado y luego se asignan a un usuario o grupo de usuarios en el otro, permitiendo así que un desarrollador asegure sus aplicaciones utilizando un enfoque estándar y estructurado.

Podemos especificar un esquema de autorización para una aplicación, página o componente específico como una región, un elemento o un botón. Por ejemplo, podríamos usar un esquema de autorización para determinar selectivamente qué pestañas, regiones o barras de navegación ve un usuario. Un esquema de autorización tiene éxito o falla. Los tipos de esquemas de autorización comunes incluyen consultas SQL Exists, Consultas SQL NOT Exists y Función PL/SQL que devuelve un valor booleano. Si un esquema de autorización de nivel de componente o control tiene éxito, el usuario puede ver el componente o control. Si falla, el usuario no puede ver el componente o el control. Si falla una aplicación o un esquema de autorización a nivel de página, Oracle Application Express muestra un mensaje previamente definido.

Como acabamos de mencionar, un esquema de autorización en APEX es un componente que devuelve un VERDADERO o un FALSO cuando se evalúa. Los esquemas de autorización pueden asociarse con casi todos los componentes de APEX, desde la aplicación hasta una columna específica en un informe. Se diferencian de los esquemas de autenticación en que determinan a qué componentes de una aplicación puede acceder o ejecutar un usuario, mientras que un esquema de autenticación determina si las credenciales de un usuario son válidas.

Cuando se crea un esquema de autorización, APEX creará automáticamente un segundo esquema de autorización que será el opuesto al que se acaba de crear. Por ejemplo, si se creara un esquema de autorización para los Usuarios Administradores, también se crearía un segundo esquema llamado {Usuarios no Administradores}. Este segundo esquema puede asociarse con cualquier componente APEX y se evaluará a VERDADERO cuando el resultado del esquema de autorización original sea FALSO o viceversa. No es necesario seleccionar ninguna opción adicional para que se cree el segundo esquema de autorización opuesto.

Los esquemas de autorización son componentes compartidos y pueden ser referenciados desde casi cualquier otro componente. A pesar de su potencia y utilidad, los esquemas de autorización son uno de los componentes más simples de APEX, ya que contienen solo cinco atributos editables, como se muestra en la imagen de abajo:

Fig.1: Los atributos de un esquema de autorización

Atributos pantalla Esquemas de Autorización

Nombre:

Si bien el nombre del esquema de autorización puede parecer que no tiene importancia, varias API hacen referencia a él. Por lo tanto, el nombre de un esquema de autorización no debe modificarse una vez creado, especialmente si se utilizan las API que hacen referencia a él. Desafortunadamente, no hay forma de imponer esto en APEX porque el campo de nombre siempre es editable.

Tipos de Esquemas:

Se pueden utilizar varios métodos diferentes para determinar el resultado de un esquema de autorización. Independientemente del tipo de esquema de autorización, el resultado final sigue siendo un valor booleano.

Se soportan los siguientes tipos:

  • Consulta SQL Exists: consulta que hace que se apruebe el esquema de autorización si devuelve al menos una fila y provoca que éste falle si no devuelve ninguna
  • Consulta SQL NOT Exists: consulta que hace que se apruebe el esquema de autorización si no devuelve ninguna fila y provoca que éste falle si devuelve una o más filas
  • Función PL/SQL Que Devuelve Valor Booleano: cuerpo de la función PL/SQL que devuelve un valor true o false. Un valor false provoca que el esquema de autorización falle. Un valor true hace que se apruebe.
  • Elemento en Expresión 1 Nulo: el valor del elemento especificado en la expresión 1 es nulo.
  • Elemento en Expresión 1 No Nulo: el valor del elemento especificado en la expresión 1 no es nulo.
  • Valor de Preferencia en Expresión 1 Equivale a Expresión 2: el valor de preferencia especificado en la expresión 1 equivale a la expresión 2.
  • Valor de Preferencia en Expresión 1 No Equivale a Expresión 2: el valor de preferencia especificado en la expresión 1 no equivale a la expresión 2.
  • Valor de Elemento en Expresión 1 Equivale a Expresión 2: el valor del elemento especificado en la expresión 1 equivale a la expresión 2.
  • Valor de Elemento en Expresión 1 No Equivale a Expresión 2: el valor del elemento especificado en la expresión 1 no equivale a la expresión 2.
  • Está en el Grupo: introduzca un nombre de grupo. La autorización es correcta si el grupo está activado como un grupo dinámico para la sesión (consulte APEX_AUTHORIZATION.ENABLE_DYNAMIC_GROUPS). Si la aplicación utiliza la autenticación de cuentas de Application Express, esta comprobación también incluye los grupos de espacios de trabajo que se otorgan al usuario. Si se utiliza la autenticación de base de datos, esta comprobación también incluye los roles de base de datos que se otorgan al usuario.
  • No Está en el Grupo: el grupo no está activado o no se ha otorgado al usuario. Consulte Está en el Grupo para obtener más información.

Mensaje de error de identificación que aparece cuando se ha violado un esquema(Valor Necesario):

Éste es el texto de error que aparece cuando este esquema de autorización se aplica a una página o aplicación. Si el esquema de autorización falla (es decir, falla la comprobación de seguridad del usuario actual), aparece este texto.

Validar Esquema de Autorización:

Hay cuatro configuraciones posibles para este atributo:

  • Una Vez por Sesión: Se evalúa solo una vez y utiliza siempre el resultado memorizado posteriormente.
  • Una Vez por Vista de Página: se evalúa una vez para cada solicitud que se procesa. Utiliza el resultado memorizado si se hace referencia al esquema de autorización en más de un componente en la página.
  • Una Vez por Componente: se evalúa una vez para cada componente que se hace referencia al esquema de autorización, pero guarda el resultado en la sesión. Las demás solicitudes para presentar o procesar el esquema utilizan el resultado memorizado.
  • Siempre (Sin almacenamiento en Caché): el esquema de autorización se evalúa siempre.

Aunque establecer el valor de este atributo en «Una vez por Vista de Página» sin duda introducirá una pequeña cantidad de sobrecarga adicional, pero proporciona la implementación más segura de los esquemas de autorización porque la asociación de un usuario con un esquema puede ser revocada inmediatamente en la página siguiente a ver. Establecer este atributo en «Una vez por Sesión» es mucho más eficiente porque todos los esquemas de autorización se evaluarán solo cuando el usuario inicie sesión y los resultados se utilizarán durante toda la sesión. Por eso este esquema es el que esta por defecto.

Las opciones Una Vez por Componente y Siempre (Sin Almacenamiento en Caché) van a proporcionar información adicional sobre el componente que se protege mediante el esquema de autorización.

Para los tipos de esquema Consulta SQL Exists y Función PL/SQL Que Devuelve Valor Booleano, hay disponibles variables de enlace :APP_COMPONENT_TYPE, :APP_COMPONENT_ID y :APP_COMPONENT_NAME equivalentes.

Comentarios:

Introducimos comentarios o notas aquí. Estos comentarios no aparecen cuando se está ejecutando la aplicación.

Para conocer más sobre la Seguridad en Aplicaciones APEX te invito a que conozcas el curso de Seguridad que he desarrollado para aprender a asegurar nuestras aplicaciones en Oracle Application Express.

Ver Contenido del Curso de Seguridad en Oracle APEX