En el presente artículo te mostraré cómo puedes crear una aplicación master que permita llamar a varias aplicaciones dentro de tu Espacio de Trabajo ingresando una única vez al inicio de sesión, ya que compartirán la misma Cookie.

Usando Cookies en Application Express

De forma predeterminada, APEX asignará a la cookie usada un nombre estándar en el formato ORA_WWV_APP_NNN, donde NNN es el ID de la aplicación. Nosotros los desarrolladores no necesitamos especificar nada para que esto ocurra; es completamente automático. Esto le permite a APEX mantener el seguimiento de la sesión para cada una de las aplicaciones y que la misma sea diferente y fácilmente identificable.

Empecemos creando la aplicación master para luego pasar a la creación de tres aplicaciones hijas para nuestro ejemplo.

Crear Aplicación Master

Para comenzar, necesitamos crear una aplicación que la he llamado Aplicación Master (ID 102) que tiene una Página en blanco y he agregado 3 botones que serán los que llamaran a cada una de las aplicaciones:

BOTON1: Aplicación A

BOTON2: Aplicación B

BOTON3: Aplicación C

También lo puedes hacer usando Listas ya que tienen diferentes tipos de plantillas que podemos usar.

El estilo de los botones lo explico en otro artículo, la única diferencia es que en cada botón en las propiedades del mismo, en “Opciones de Plantilla” asignamos en Width = Stretch de esa forma cada botón ocupará el ancho completo de la fila.

El template de la región es “Blank with Attributes” y he eliminado la región de la Ruta de Navegación.

Por último para que no se vea el sidebar con los elementos de menú (en el costado izquierdo), que en este caso solo se veía “Inicio” lo he ocultado de esta manera:

Desde el Diseñador de Páginas de la Pagina 1 de Inicio, vamos al panel de propiedades y en la sección Menú de Navegación, indicamos en en “Sustituir Nivel de Interfaz de Usuario”, de esta forma se muestra una lista de selección llamada Lista el cual seleccionamos la opción “No mostrar Lista de Menú de Navegación”.

Cuando ejecutamos la página vemos el siguiente resultado:

Crear Aplicaciones Hijas

Ahora vamos a crear tres aplicaciones adicionales en nuestro Espacio de Trabajo.

Para poder Identificarlas he cambiado el fondo de la página de Inicio de Sesión:

  • Aplicación A corresponde al número de aplicación 125 en mi Espacio de Trabajo
  • Aplicación B corresponde al número de aplicación 126 en mi Espacio de Trabajo
  • Aplicación C corresponde al número de aplicación 127 en mi Espacio de Trabajo

Ingresamos en la aplicación Master y realizamos lo siguiente:

En el BOTON1 ingresamos al panel de propiedades del botón  el enlace a la página de Inicio de la Aplicación A.

Para acceder a cada una de ellas siempre nos pide colocar nuestras credenciales.

Como mencioné antes el objetivo de este artículo es que podamos abrir la aplicación Master ingresando nuestras credenciales y que luego cada botón llame a cada una de estas aplicaciones hijas y no nos vuelva a pedir el inicio de sesión, una consideración a tener en cuenta es que las aplicaciones deben estar todas en el mismo Espacio de Trabajo.

Para conseguir esto vamos a trabajar con las Cookie que nos provee Oracle APEX. Cabe aclarar que esto es un simple ejemplo y estamos usando los usuarios de Application Express.

Por otro lado, podemos crear nuestro propio esquema de autenticación, que puedes ver cómo crearlo en este artículo que he escrito hace un tiempo.

Configuraciones en la Aplicación Master

Ingresamos a la aplicación master, en mí caso es la número 102 y hacemos clic en Componentes Compartidos:

En la sección Seguridad hacemos clic en “Esquemas de Autenticación”

Se mostrará el esquema que estamos usando actualmente, que es el de APEX.

Hacemos clic en el enlace para editarlo:

Hacemos clic en la sección “Atributos de Cookie de Sesión”, en esta sección se muestran los atributos que controlan cómo se crea la cookie de sesión para una aplicación en AEPX. Tenemos 4 opciones.

El atributo “Nombre de la Cookie” se puede ajustar a cualquier valor que nosotros elijamos. Si, por ejemplo, nosotros elegimos el nombre MYCOOKIEAPP, cuando un usuario se autentica en la aplicación, el nombre de la cookie es configurada en APEX como mycookieapp. Si el nombre de la cookie de un conjunto de aplicaciones se establece en MYCOOKIEAPP,  pasará que cuando el usuario se autentique a cualquiera de ellas, quedará autenticado en todas las aplicaciones que tengan el mismo nombre de cookie configurado. Precisamente es eso lo que queremos realizar en este ejemplo.

Nombre de la Cookie: MYCOOKIEAPP:

El nombre de la cookie de sesión se necesita para identificar una sesión de APEX, junto con el identificador de sesión de la URL. Si no especificamos ningún valor para el nombre de cookie de sesión, APEX selecciona un valor por defecto.

Ruta de Acceso de Cookie: indica la ruta de acceso de la cookie.

Dominio de Cookie: indica el dominio de la cookie.

Proteger: Lo configuramos en “No”

El atributo “Proteger” se utiliza para determinar si se permite la creación de la “cookie de sesión” cuando se ejecuta a través de HTTP. Si se establece en No, entonces, APEX permitirá que la cookie de sesión sea configurada utilizando HTTP. Esto es extremadamente peligroso y la aplicación queda abierta a una gran cantidad de riesgo porque cualquiera que pueda ver los paquetes de red puede interceptar y agarrar los valores de las cookies de sesión y el identificador de sesión ya que ellos son enviados a su PC. Teniendo estos dos valores, es posible que un usuario malicioso pueda secuestrar la sesión de APEX mediante la construcción de una cookie falsa en su PC.

Por lo tanto, este atributo debería ser siempre establecido en Sí, lo que restringiría a APEX a enviar la cookie de sesión del cliente solo cuando la conexión se realice a través de HTTPS. En el caso que seleccionemos No el explorador enviará la cookie de gestión de sesión cuando el protocolo sea HTTP o HTTPS.

Si el certificado SSL está configurado en el servidor web, debemos seleccionar Sí para reforzar la seguridad de la aplicación evitando el tráfico HTTP no cifrado.

Nota: en este caso necesitamos configurar en No ya que no tenemos un certificado SSL configurado en nuestro servidor.

Hacemos clic en el botón Aplicar Cambios.

Configuraciones en las Aplicaciones Hijas

Ahora es momento de abrir la Aplicación A y nuevamente nos dirigimos a Componentes Compartidos — Seguridad — Esquemas de Autenticación:

  • Hacemos clic en APEX- Actual
  • Hacemos clic en Atributos de Cookie de Sesión y colocamos el mismo nombre de cookie que la master aplicación: MYCOOKIEAPP.
  • Hacemos clic en la ficha Sesión no Válida:
    1. Ir a: URL
    2. URL: f?p=102:101:&SESSION. (donde 102 es el número de la aplicación master y 101 es el número de la página de inicio de sesión)
  • Aplicamos los Cambios

 

De igual modo realizamos los mismos pasos para la Aplicación B y la Aplicación C, colocando el nombre de la cookie como MYCOOKIEAPP y la URL en  f?p=102:101:&SESSION. (no nos olvidemos del punto al final de la variable &SESSION.).

Visualizar los Resultados

Vamos a cerrar todas las aplicaciones que tengamos abiertas en nuestro Espacio de Trabajo y abrimos la Aplicación Master, nos va a pedir el ingreso de nuestras credenciales:

 

 

Aparece la página de inicio de la aplicación con los tres botones que acceden a cada una de las aplicaciones hijas.

Al hacer clic en el primer botón, nos lleva a la Aplicación A sin tener que iniciar sesión de nuevo ya que recuerda el ID de la Sesión por la Cookie que le hemos asignado:

Regresamos a la Aplicación Master y accedemos a la Aplicación B:

Finalmente probamos de acceder a la Aplicación C:

De esta forma muy sencilla podemos tener una Aplicación Master que contenga por ejemplo diferentes aplicaciones referidas a distintos departamentos de nuestra organización por ejemplo, Ventas, Compras, Finanzas, Inventario, Facturación, etc. Y el usuario sólo necesita ingresar una sola vez sus credenciales.

Será hasta un próximo artículo!!!