Omni - Interface independent session management

Iván Chavero
JAWS Development Team
November 2004

Introduction

Omni (as a contraction of omnipresent) is a independent session manager model that separates the policies from the interface. Omni’s objective is to implement a single sign on to be used on different applications independently of the way they are implemented, you can create a session on the desktop client and use it on the web application or login on a omni enabled web application and visit another omni enabled web application without having to login again.

Omni supports plugin authentication, having only to change the authentication module and function on its configuration, this gives us that it supports multiple authentication schemes (as many as modules are written -or as many authentication schemes are out there ;-) -).

Also, it provides attribute handling functionallity, omni keeps attributes on the session and they can be set or retrieved from within any client that is omni enabled, this frees the programer of having to write functions to store user session attributes somewhere and somehow on every application.

Omni leaves the client session storing to the programer so he can choose the proper mechanism for that particular application.

Overview

The core of omni is intended to be independent of the application that is using it. It provides the mechanisms to create, maintain and delete anonymous or authenticaded sessions (ie. a web application calls omni to create the session then it sends a cookie to the web browser with the session id, when the cookie is retrieved on other http request, the application gives omni the session id checks if it is logged and retrieve the attributes set on previously on other requests).

This part of omni specifies how a session is defined, it’s basic attributes, obfuscation, session verification, session expiring, authentication and system cleanup for expired sessions.

The client part of omni stores only an obfuscated session identificator that is used to find the session on the server.

+------------+            +------------+         +------------+              +------------+
|            |   SID      |            |         |            |              |  Database  |
|            |   attrs    |            |         |            |              +------------+
|   client   |   ---->    |   server   |  ---->  |   Omni     |  ----->
|            |   <----    |            |  <----  |            |  <----       +------------------+
|            |            |            |         |            |              | Filesystem cache |
+------------+            +------------+         +------------+              +------------------+

TODO

Change the session behaviour, so the data stored during the session stays on the DB after the session has expired. there are two ways of doing this:

  • Change the database so there is a table with active sessions and another with the sessions attributes indexed by user.
  • (quick dirty way) just delete the session identifier of the sessions table.

API

EXAMPLES


Omni - Interface independent session management (Control de sesiones con independencia de Interfase)

Iván Chavero JAWS Development Team November 2004 Al español por JASH

Introducción

Omni (Contracción de omnipresente) es un modelo independiente de control de sesiones que separa las políticas de la interfase. El objetivo de Omni es implementar un acceso único (Single Sing on) para ser usado por diferentes aplicaciones independientemente de la forma en que se hayan implementado, Ud. puede crear una sesión en el escritorio del cliente y usarla para una aplicación web o ingresar en una aplicación web con omni y visitar cualquier otra aplicación con omni sin necesidad de volver a ingresar.

Omni soporta autenticación por plugin, teniendo solo que cambiar la configuración del modulo de autenticación y su función, esto nos da la oportunidad de soportar múltiples esquemas de autenticación (Tantos como módulos se escriban o como esquemas de autenticación anden por ahí).

Además, provee la funcionalidad de manejo de atributos, omni mantiene los atributos en la sesión y estos pueden ser fijados u obtenidos desde cualquier cliente habilitado con omni, esto libera al programador de tener que escribir funciones para almacenar los atributos de sesión del usuario en cada aplicación.

Omni deja el almacenado de la sesión del cliente al programador, así el puede escoger el mecanismo apropiado para cada aplicación en particular.

Descripción.

El núcleo de omni pretende ser independiente de la aplicación que se este usando. Provee los mecanismos para crear, mantener y borrar sesiones anónimas o autenticadas (ejem. Una aplicación web llama a omni para crear la sesión, entonces se envía una cookie al navegador web con el identificador de la sesión, cuando la cookie es obtenida en otra solicitud http, la aplicación le da a omni el identificados de la sesión, checa si aun se esta ingresado y obtiene los atributos fijados en solicitudes previas).

Esta parte de omni especifica como una sesión es definida, esto es básicamente atributos, ofuscación, verificación de sesión, expiración de sesión, autenticación y limpia del sistema para sesiones expiradas.

La parte del cliente omni, almacena solo un identificador de sesión ofuscada que es usado para encontrar la sesión en el servidor.

+------------+            +------------+         +------------+              +------------+
|            |   SID      |            |         |            |              |  Database  |
|            |   attrs    |            |         |            |              +------------+
|   client   |   ---->    |   server   |  ---->  |   Omni     |  ----->
|            |   <----    |            |  <----  |            |  <----       +------------------+
|            |            |            |         |            |              | Filesystem cache |
+------------+            +------------+         +------------+              +------------------+


PENDIENTES

Cambiar el comportamiento de la sesión, de forma que los datos almacenados en la sesión permanezcan en la base de datos después de que la sesión haya expirado. Hay dos formas de realizar esto:

Cambiar la base de datos de forma que exista una tabla con sesiones activas y otra con atributos indexada por usuario. (La forma fácil) solo borre el identificador de la tabla de sesiones.

 
  /var/www/wiki/htdocs/data/jaws/development/omni/whatis.txt · Last modified: 2007/11/02 16:27