Vous êtes sur la page 1sur 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE

Edicin: V 2.0.1

Autor: Unidad de Informtica Corporativa rea de Desarrollo y Mantenimiento Fecha: Septiembre 2006

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 1.3

Historia del Documento


Versin: Beta Descripcin: Documento tcnico sobre la infraestructura del sistema de seguridad para aplicaciones, as como la gua de uso de los componentes de acceso al sistema de seguridad que deben utilizarse en aplicaciones J2EE. Elaborado por: Diego Garca Carrera Fecha: Diciembre 2003 Versin: V1.0 Descripcin: Documento tcnico sobre la infraestructura del sistema de seguridad para aplicaciones, as como la gua de uso de los componentes de acceso al sistema de seguridad que deben utilizarse en aplicaciones J2EE. Elaborado por: Diego Garca Carrera Fecha: Febrero 2004 Revisado por: Juan Antonio Barras Garca Fecha: Marzo 2004 Aprobado por: Juan Antonio Barras Garca Fecha: Marzo 2004 Versin: V1.1 Descripcin: Documento tcnico sobre la infraestructura del sistema de seguridad para aplicaciones, as como la gua de uso de los componentes de acceso al sistema de seguridad que deben utilizarse en aplicaciones J2EE. Elaborado por: Diego Garca Carrera Fecha: Agosto 2004 Revisado por: Juan Antonio Barras Garca Fecha: Agosto 2004 Aprobado por: Juan Antonio Barras Garca Fecha: Agosto 2004 Versin: V1.2 Descripcin: Documento tcnico sobre la infraestructura del sistema de seguridad para aplicaciones, as como la gua de uso de los componentes de acceso al sistema de seguridad que deben utilizarse en aplicaciones J2EE. Elaborado por: Diego Garca Carrera Fecha: Marzo 2005 Revisado por: Juan Antonio Barras Garca Fecha: Abril 2005 Aprobado por: Juan Antonio Barras Garca Fecha: Abril 2005 Versin: V1.3 Descripcin: Documento tcnico sobre la infraestructura del sistema de seguridad para aplicaciones, as como la gua de uso de los componentes de acceso al sistema de seguridad que deben utilizarse en aplicaciones J2EE. Elaborado por: Diego Garca Carrera Fecha: Septiembre 2005 Revisado por: Juan Antonio Barras Garca Fecha: Septiembre 2005 Aprobado por: Juan Antonio Barras Garca Fecha: Septiembre 2005 Versin: V2.0 Descripcin: Documento tcnico sobre la infraestructura del sistema de seguridad para aplicaciones, as como la gua de uso de los componentes de acceso al sistema de seguridad que deben utilizarse en aplicaciones J2EE. Elaborado por: Diego Garca Carrera Fecha: Agosto 2006 Revisado por: Juan Antonio Barras Garca Fecha: Septiembre 2006 Aprobado por: Juan Antonio Barras Garca Fecha: Septiembre 2006 Lista de distribucin del documento Nombre Localizacin Acceso pblico

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

ndice
1 Introduccin........................................................................................................5
1.1 Objetivos del sistema de seguridad ................................................................................ 5 1.2 Elementos que componen el sistema de Seguridad ....................................................... 5 1.2.1 Versin principal con Repositorio en Base de Datos ............................................ 5 1.2.2 Versin con Repositorio en XML ........................................................................... 5

Entorno Tecnolgico del sistema .....................................................................6

2.1 Diagrama de Componentes Software ............................................................................. 6 2.2 Descripcin de los componentes .................................................................................... 7

Modelo de datos del Sistema de Seguridad.....................................................8

3.1 Detalle de Tablas y Columnas ........................................................................................ 9 3.2 Paquetes y Triggers para el Cifrado de Contraseas ................................................... 12

Componentes de acceso al Sistema de seguridad .......................................13


4.1.1 EjbFactoryAutenticacion...................................................................................... 14 4.1.2 Autenticacion....................................................................................................... 15

4.1 Componente de Autenticacin ...................................................................................... 13

4.2 Componente de Autenticacin ligero de tipo Stateless................................................. 18 4.2.1 EjbFactoryAut...................................................................................................... 18 4.3 Componente Autorizacin ............................................................................................. 20 4.3.1 EjbFactoryAutorizacion ....................................................................................... 20 4.3.2 Autorizacion......................................................................................................... 22 4.4 Componente de Autorizacin ligero de tipo Stateless................................................... 25 4.5 Componente de Gestin de Usuarios ........................................................................... 25 4.5.1 EjbFactoryGUsuarios .......................................................................................... 25 4.5.2 GUsuarios ........................................................................................................... 26 4.6 Clases utilizadas para el intercambio de informacin ................................................... 28 4.6.1 Clase Usuario...................................................................................................... 28 4.6.2 Clase Funcion ..................................................................................................... 30 4.6.3 Clase SeguUsuariosOT....................................................................................... 31 4.6.4 Clase SeguAsignacionUsuariosOT ..................................................................... 32 4.7 Ficheros de propiedades utilizados personalizar nuestro sistema de seguridad .......... 32 4.7.1 Definicin de distintas fuentes de datos: segu.properties ................................... 32 4.7.2 Definicin del fichero de logs : log4jconf.properties ............................................ 33 4.7.3 Definicin del servicio de directorio LDAP : LDAPUsuarios.properties ............... 33 4.7.4 Definicin del mapeo Atributos-Datos Usuario: AtribUsuarios.properties ........... 34

Componentes de Gestin del Sistema de Seguridad....................................34

Pgina 3 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

5.1 Aplicacin Web de gestin del sistema de seguridad ................................................... 34 5.2 Componente de Gestin de Usuarios ........................................................................... 35 5.2.1 Uso de la Gestin de Usuarios dentro de nuestra aplicacin J2EE ................... 35

Uso del sistema de seguridad dentro de nuestra aplicaciones J2EE ........ 37

6.1 Parmetros para acceder al sistema de seguridad ....................................................... 37 6.2 Ejemplo de uso : Cdigo de validacin de usuario........................................................ 38

7 ANEXO I: Como ampliar la definicin de seguridad de mi aplicacin. Gestin de parmetros de aplicacin ................................................................... 40
7.1 Introduccin ................................................................................................................... 40 7.2 Alta de parmetros ........................................................................................................ 40 7.3 Restringir el valor de los parmetros ............................................................................. 40

Pgina 4 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

1
1.1

Introduccin
Objetivos del sistema de seguridad
Dotar de un mecanismo de seguridad estndar a las Aplicaciones J2EE separarando las funcionalidades en mdulos o componentes especializados en cada aspecto del sistema de seguridad. Definir los componentes de forma que sean de fcil uso al programador. Garantizar que no hay efectos colaterales ante el cambio/evolucin del sistema de seguridad (futuro: adicin de mdulos de seguridad basados en certificados y firma, otros cambios)

1.2

Elementos que componen el sistema de Seguridad

Dentro del sistema de Seguridad general se disponen de 2 versiones:

1.2.1 Versin principal con Repositorio en Base de Datos

Esta versin del sistema de seguridad es la que principal y la que se propone para el funcionamiento en el entorno de Explotacion de las aplicaciones. Esta versin se compone de: Un repositorio de datos basado en Oracle (Ver Modelo de datos). Un repositorio opcional y alternativo basado en un servicio de directorios basado en LDAP. Unos componentes distribuibles de acceso a esos datos por EJBs (Ver componentes de acceso) Una aplicacin de gestin para el mantenimiento de los datos (Ver Aplicacin de gestin del sistema de seguridad) Componente distribuibles para la gestin de usuarios basados en Base de Datos (Ver Componente GestUsu)

A continuacin, y para el resto del documento se hablar de esta versin principal.

1.2.2 Versin con Repositorio en XML


La versin basada en XML nicamente es aplicable para entornos de desarrollo en los cuales se decide no implantar el sistema de seguridad completo. Esta versin se basa en: Un repositorio de datos en un fichero XML (estructura.xml)

Pgina 5 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

Unos componentes de acceso a esos datos. Este componente posee las mismas clases y mtodos que su equivalente en la versin Base de Datos

Para ver la documentacin completa de esta versin leer ANEXO I

2 Entorno Tecnolgico del sistema


2.1 Diagrama de Componentes Software

id Entorno Tecnolgico Usuarios Externos

Am bos servidores de aplicaciones OC4J pueden ser el m ism o

Am bos SGBD pueden ser el m ism o

Serv idor Aplicaciones OC4J

SGBD SGBD ORACLE

Aplicacion J2EE M antenim iento/Consulta

Esquema Aplicacion

Interfaz SistSegu SGBD SGBD ORACLE Serv idor de Aplicaciones OC4J

Nav egador Web

Componente SistSegu

Acceso Esquema SEGU

EJB Autenticacion

EJB Autorizacion

Acceso

Serv icio de Directorios LDAP EJB GUsuarios realize M antenim iento de los Datos

Directorio LDAP Usuarios

Aplicacion de Gestion (GestSegu)

Figura 1 : Entorno Tecnolgico

Pgina 6 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

2.2

Descripcin de los componentes

Navegador Web: Componente Cliente para el acceso a las aplicaciones J2EE. Servidor de Aplicaciones OC4J: Servidor de Aplicaciones que atiende peticiones de los clientes Web y donde se despliegan las aplicaciones desarrolladas. Aplicacin J2EE: Aplicacin desarrollada para atender a los requisitos de usuario y que utiliza el sistema de seguridad propuesto. Servidor de Aplicaciones OC4J: Servidor de Aplicaciones donde se despliega los componentes del sistema de seguridad. Componente SistSegu: Componente servidor que accede a la base de datos de seguridad que incluye Autenticacin, Autorizacin y GUsuarios (Gestion remota de usuarios) Aplicacin de Gestin: Aplicacin de gestin para el mantenimiento de los datos de seguridad: Aplicaciones, Usuarios, Roles, Funciones de aplicacin, etc. SGBD ORACLE: Sistema Gestor de Base de datos ORACLE Esquema SEGU: Esquema de base de datos repositorio de las tablas del sistema de Seguridad. Esquema Aplicacin: Esquema de base de datos repositorio de las tablas de la aplicacin cliente. Servicios de Directorios LDAP: Servicio de Directorios con acceso LDAP donde reside el directorio con los usuarios que pueden acceder al sistema. Directorio LDAP Usuarios: rbol con los usuarios almacenados en formato Directorio.

Pgina 7 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

3 Modelo de datos del Sistema de Seguridad

cd Base Datos 2006 SEGU_USUARIOS SEGU_EXT_USUARIOS SEGU_PROPIEDADES_USUARIOS

+SEGU_EXT _USUARIOS_USU_FK colum n colum n +PK_SEGU_PROPIEDADES_USUARIOS colum n *PK C_USR_ID: VARCHAR2(30) *PK C_PROPIEDAD: VARCHAR2(30) +SEGU_USUARIOS_PK*pfK C_USR_ID: VARCHAR2(30) 0..* *pfK C_PROPIEDAD: VARCHAR2(30) D_APELL: VARCHAR2(30) * D_ET IQUET A: VARCHAR2(100) (C_PROPIEDAD = C_PROPIEDAD) (C_USR_ID = C_USR_ID) 1 D_VALOR: VARCHAR2(250) D_NOM : VARCHAR2(30) D_VALOR_DEFECT O: VARCHAR2(250) 1 +SEGU_EXT _USUARIOS_PROP_FK 0..* F_CREAC: DAT E PK C_USR_CREAC: VARCHAR2(30) PK A_PASSWORD: VARCHAR2(30) + PK_SEGU_EXT _USUARIOS(VARCHAR2, VARCHAR2) + PK_SEGU_PROPIEDADES_USUARIOS(VARCHAR2) F_M ODIF: DAT E FK C_USR_M ODIF: VARCHAR2(30) + SEGU_EXT _USUARIOS_PROP_FK(VARCHAR2) C_UNIDAD_ID: VARCHAR2(10) + SEGU_EXT _USUARIOS_USU_FK(VARCHAR2) * B_ACT IVO: VARCHAR2(1) D_SEGURIDAD: VARCHAR2(150) +SEGU_ASIG_USUARIOS_USUARIOS_FK C_DNI: VARCHAR2(8) SEGU_ASIGNACION_FUNCIONES C_NIF: VARCHAR2(1) +SEGU_USUARIOS_PK SEGU_ASIGNACION_USUARIOS (C_USR_ID = C_USR_ID) colum n C_CORREO: VARCHAR2(150) 1 *pfK C_APLICACION_ID: VARCHAR2(4) colum n 0..* *pfK C_GRUPO_ID: VARCHAR2(25) PK *FK C_GRUPO_ID: VARCHAR2(25) *pfK C_FUNCION_ID: VARCHAR2(25) *PK C_USR_ID: VARCHAR2(30) + SEGU_USUARIOS_PK(VARCHAR2) * B_BORRADO: VARCHAR2(1) = ' *PK C_APLICACION_ID: VARCHAR2(4) index * N_ORDEN: NUM BER(2) * B_BORRADO: VARCHAR2(1) = ' + SEGU_USUARIOS_CIF_UK(VARCHAR2, VARCHAR2) N_PROFUNDIDAD: NUM BER(2) F_ULT IM A_CONEXION: DAT E + SEGU_USUARIOS_D_APELL(VARCHAR2) C_M ENU_ID: VARCHAR2(2) unique C_FUNCION_PADRE: VARCHAR2(25) PK + SEGU_USUARIOS_CIF_UK(VARCHAR2, VARCHAR2) + SEGU_ASIGNACION_USUARIOS_PK(VARCHAR2, VARCHAR2) PK FK +SEGU_USUARIOS_PK 1 +SEGU_ASIG_FUNCIONES_GRUPO_FK + SEGU_ASIGNACION_FUNCIONES_PK(VARCHAR2, VARCHAR2, VARCHAR2) + SEGU_ASIG_USUARIOS_APLIC_FK(VARCHAR2) FK + SEGU_ASIG_USUARIOS_GRUPOS_FK(VARCHAR2) 0..* + SEGU_ASIG_FUNCIONES_APLIC_FK(VARCHAR2) + SEGU_ASIG_USUARIOS_USUARIOS_FK(VARCHAR2) + SEGU_ASIG_FUNCIONES_FUNC_FK(VARCHAR2) (C_GRUPO_ID = C_GRUPO_ID) + SEGU_ASIG_FUNCIONES_GRUPO_FK(VARCHAR2) (C_GRUPO_ID = C_GRUPO_ID) +SEGU_ASIG_USUARIOS_GRUPOS_FK +SEGU_ASIG_USUARIOS_APLIC_FK 0..* 0..* +SEGU_GRUPO_USUARIOS_PK SEGU_GRUPO_USUARIOS 1 colum n *PK C_GRUPO_ID: VARCHAR2(25) D_GRUPO: VARCHAR2(200) PK + SEGU_GRUPO_USUARIOS_PK(VARCHAR2) index (C_USR_ID = C_USR_ID) + SEGU_GRUPO_D_GRUPO(VARCHAR2) +SEGU_GRUPO_USUARIOS_PK 1 (C_FUNCION_ID = C_FUNCION_ID) 1 +SEGU_ASIG_FUNCIONES_APLIC_FK +SEGU_ASIG_FUNCIONES_FUNC_FK 0..* +SEGU_GRUPO_USUARIOS_PK 0..*

(C_APLICACION_ID = C_APLICACION_ID) (C_APLICACION_ID = C_APLICACION_ID) +SEGU_FUNCIONES_PK

SEGU_FUNCIONES col um n *PK C_FUNCION_ID: VARCHAR2(25) D_DESCRIPCION: VARCHAR2(150) D_PROCESO: VARCHAR2(250) D_NOM BRE: VARCHAR2(50) PK + SEGU_FUNCIONES_PK(VARCHAR2) +SEGU_FUNCIONES_PK 1

+SEGU_APLICACIONES_PK +SEGU_APLICACIONES_PK 1 SEGU_APLICACIONES colum n *PK C_APLICACION_ID: VARCHAR2(4) D_APLICACION: VARCHAR2(200)

PK + SEGU_APLICACIONES_PK(VARCHAR2) index + SEGU_APLICACIONES_D_APLICACION(VARCHAR2) +SEGU_APLICACIONES_PK 1 (C_APLICACION_ID = C_APLICACION_ID) +SEGU_PARAM APLICACION_APL_FK +SEGU_PARAM USR_GRUP_FK 0..* SEGU_PARAM _USUARIOS colum n *pfK C_APLICACION_ID: VARCHAR2(4) *pfK C_PARAM ET RO: VARCHAR2(25) *pfK C_USR_ID: VARCHAR2(30) * D_VALOR: VARCHAR2(300) PK + SEGU_PARAM _USUARIOS_PK(VARCHAR2, VARCHAR2, VARCHAR2) check + SYS_C002515() + SYS_C002516() + SYS_C002517() + SYS_C002518() FK + SEGU_PARAM USR_PARAM _FK(VARCHAR2, VARCHAR2) + SEGU_PARAM USR_GRUP_FK(VARCHAR2) (C_GRUPO_ID = C_GRUPO_ID) (C_APLICACION_ID = C_APLICACION_ID +SEGU_PARAM USR_PARAM _FK C_PARAM ET RO = C_PARAM ET RO) 0..* 0..* +SEGU_PARAM _APLICACIONES_PK

SEGU_PARAM _APLICACIONES

colum n *pfK C_APLICACION_ID: VARCHAR2(4) 1 *PK C_PARAM ET RO: VARCHAR2(25) D_PARAM ET RO: VARCHAR2(100) D_VALOR: VARCHAR2(300) D_COM ENT ARIO: VARCHAR2(250)

(C_FUNCION_ID = C_FUNCION_ID)

PK + SEGU_PARAM _APLICACIONES_PK(VARCHAR2, VARCHAR2) check + SYS_C002507() + SYS_C002508() FK + SEGU_PARAM APLICACION_APL_FK(VARCHAR2) +SEGU_PARAM _APLICACIONES_PK (C_APLICACION_ID = C_APLICACION_ID C_PARAM ET RO = C_PARAM ET RO) 1

+SEGU_PARAM GRUPOS_GRUP_FK 0..* +SEGU_PARAM GRUPOS_PARAM _FK 0..* SEGU_PARAM _GRUPOS SEGU_TP_M ENUS colum n *PK C_M ENU_ID: VARCHAR2(2) * D_M ENU: VARCHAR2(100) PK + SEGU_T P_M ENUS_PK(VARCHAR2) check + SYS_C002520() + SYS_C002521() colum n *pfK C_APLICACION_ID: VARCHAR2(4) *pfK C_PARAM ET RO: VARCHAR2(25) *pfK C_GRUPO_ID: VARCHAR2(25) * D_VALOR: VARCHAR2(300) PK + SEGU_PARAM _GRUPOS_PK(VARCHAR2, VARCHAR2, VARCHAR2) FK + SEGU_PARAM GRUPOS_GRUP_FK(VARCHAR2) + SEGU_PARAM GRUPOS_PARAM _FK(VARCHAR2, VARCHAR2)

+SEGU_EXT _FUNCIONES_FUN_FK 0..* SEGU_EXT_FUNCIONES colum n *pfK C_FUNCION_ID: VARCHAR2(25) *PK C_CAM PO: VARCHAR2(20) D_DESCRIPCION: VARCHAR2(200) * D_VALOR: VARCHAR2(100) PK + SEGU_EXT _FUNCIONES_PK(VARCHAR2, VARCHAR2) FK + SEGU_EXT _FUNCIONES_FUN_FK(VARCHAR2)

Figura 2 : Esquema de Datos

Pgina 8 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

3.1

Detalle de Tablas y Columnas

SEGU_APLICACIONES: Almacena el catlogo de aplicaciones que estn dadas del alta en el sistema de seguridad. Atributos
C_APLICACION_ID D_APLICACION

Tipo
VARCHAR2(4) VARCHAR2(200)

Descripcin
Clave Principal; Identificador de la aplicacin Descripcin de la aplicacin

SEGU_PARAM_APLICACIONES: Definicin de los parmetros definidos para la aplicacin, incluyendo su valor por defecto para todos los usuarios de la misma. Atributos
C_APLICACION_ID C_PARAMETRO D_PARAMETRO D_VALOR D_COMENTARIO

Tipo
VARCHAR2(4) VARCHAR2(25) VARCHAR2(100) VARCHAR2(50) VARCHAR2(150)

Descripcin
Clave Principal; Identificador de Ampliacin Clave Principal; Cdigo de parmetro Descripcin del parmetro Valor por defecto para todos los usuarios conectados a la aplicacin Ampliacin de la descripcin

SEGU_USUARIOS: Almacena al catlogo de usuarios que tienen acceso a las aplicaciones Atributos
C_USR_ID D_APELL D_NOM F_CREAC C_USR_CREAC A_PASSWORD F_MODIF C_USR_MODIF C_UNIDAD_ID B_ACTIVO D_SEGURIDAD C_DNI

Tipo
VARCHAR2(30) VARCHAR2(30) VARCHAR2(30) DATE VARCHAR2(30) VARCHAR2(30) DATE VARCHAR2(30) VARCHAR2(10) VARCHAR2(1) VARCHAR2(30) VARCHAR2(8)

Descripcin
Clave Principal; Identificador de usuario. Recomendado utilizar nomenclatura corporativa Apellidos Nombre Fecha de alta (calculado) Usuario de alta Contrasea Fecha de ultima modificacin (calculado) Usuario de la modificacion Unidad administrativa Activado/desactivado (S/N) Dato de Seguridad (de uso libre) Numero de DNI. Usado junto C_NIF para trazabilidad con la informacin de los Certificados Digitales Letra del DNI

C_NIF

VARCHAR2(1)

Pgina 9 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0 C_CORREO VARCHAR(150) Cuenta de correo electrnico

SEGU_PROPIEDADES_USUARIOS: Almacena el catlogo de propiedades que amplan la definicin del usuario. Atributos
C_PROPIEDAD D_ETIQUETA D_VALOR_DEFECTO

Tipo
VARCHAR2(30) VARCHAR2(100) VARCHAR2(250)

Descripcin
Clave Principal; Identificador de propiedad Descripcin o etiqueta del campo a mostrar Valor por defecto de la columna. Se aplicara nicamente cuando no exista un valor concreto. Puede ser NULL.

SEGU_USUARIOS_EXT: Almacena los valores SEGU_PROPIEDADES_USUARIOS para cada usuario Atributos


C_USR_ID C_PROPIEDAD

de

cada

propiedad

de

Tipo
VARCHAR(30) VARCHAR2(30)

Descripcin
Clave Principal; Identificador de usuario. (FK de SEGU_USUARIOS.C_USR_ID) Clave Principal; Identificador de propiedad (FK de SEGU_PROPIEDADES_USUARIOS.C_PROPIE DAD) Valor del campo. Puede ser NULL.

D_VALOR

VARCHAR2(250)

SEGU_GRUPO_USUARIOS: Almacena el Catlogo de roles o perfiles de acceso de los usuarios Atributos


C_GRUPO_ID D_GRUPO

Tipo
VARCHAR2(25) VARCHAR2(30)

Descripcin
Clave Principal; Identificador del grupo de usuarios. Globales y reutilizables en todo el sistema Descripcin del grupo

SEGU_PARAM_USUARIOS: Almacena los valores de los parmetros definidos en la aplicacin para un usuario en particular. Atributos
C_APLICACION_ID C_PARAMETRO C_USR_ID D_VALOR

Tipo
VARCHAR2(4) VARCHAR2(25) VARCHAR2(30) VARCHAR2(50)

Descripcin
Clave Principal; Identificador de Ampliacin Clave Principal; Cdigo de parmetro Clave Principal; Identificador de usuario. Valor particular del parmetro para este usuario

SEGU_PARAM_GRUPOS: Almacena los valores de los parmetros definidos en la aplicacin para un grupo en particular. Atributos Tipo Descripcin Pgina 10 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0 C_APLICACION_ID C_PARAMETRO C_GRUPO_ID D_VALOR VARCHAR2(4) VARCHAR2(25) VARCHAR2(25) VARCHAR2(50) Clave Principal; Identificador de Ampliacin Clave Principal; Cdigo de parmetro Clave Principal; Identificador del grupo de usuarios Valor por defecto para todos los usuarios conectados a la aplicacin pertenecientes al grupo dado

SEGU_FUNCIONES: Almacena el Catlogo de funciones junto con la accin que desencadena dentro de la aplicacin. Atributos
C_FUNCION_ID D_DESCRIPCION D_PROCESO

Tipo
VARCHAR2(25) VARCHAR2(150) VARCHAR2(250)

Descripcin
Clave Principal; Identificador de funcin Descripcin textual de la funcin Referencia a la accin (Action Struts) que se invocar en la aplicacin. Por extensin, el enlace desde el punto de vista del programa a la opcin de men Nombre de la funcin

D_NOMBRE

VARCHAR2(50)

SEGU_EXT_FUNCIONES: Definicin de campos y su valor para ampliar la definicin de una funcin. Atributos
C_FUNCION_ID C_CAMPO D_VALOR D_DESCRIPCION

Tipo
VARCHAR2(25) VARCHAR2(10) VARCHAR2(100) VARCHAR2(250)

Descripcin
Clave Principal; Identificador de funcin Clave Principal; Parmetro extendido que se quiere asociar a una funcin Valor del parmetro Descripcin del parmetro

SEGU_ASIGNACION_FUNCIONES: Almacena la asociacin de las funciones que posee una aplicacin y a la cual tienen acceso los usuario del grupo determinado. Adems se determina en la posicin que debe aparecer y a que barra de menus en la que se presentar

Atributos
C_APLICACION_ID C_GRUPO_ID C_FUNCION_ID N_ORDEN

Tipo
VARCHAR2(4) VARCHAR2(25) VARCHAR2(25) NUMBER(2)

Descripcin
Clave Principal; Identificador de aplicacin Clave Principal; Identificador de grupo Clave Principal; Identificador de funcin Orden de aparicin dentro de una jerarqua de mens

Pgina 11 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0 N_PROFUNDIDAD C_MENU_ID C_FUNCION_PADRE B_BORRADO NUMBER(2) VARCHAR2(1) VARCHAR2(25) VARCHAR2(1) Profundidad de la opcin dentro de una jerarqua de mens Tipo de mens SEGU_TP_MENUS segn tabla

Identificador de la funcin padre dentro de una jerarqua de mens Activado o desactivado de una opcin de men para este grupo y aplicacin. (S/N) N: Acceso permitido, S: Acceso no permitido

SEGU_ASIGNACION_USUARIOS: Almacena para cada aplicacin los usuarios que tiene acceso a la misma indicando con que rol o perfil de acceso

Atributos
C_APLICACION_ID C_USR_ID C_GRUPO_ID F_ULTIMA_CONEXION B_BORRADO

Tipo
VARCHAR2(4) VARCHAR2(30) VARCHAR2(25) DATE VARCHAR2(1)

Descripcin
Clave Principal; No nulo; Unique; Clave Principal; No nulo; Unique; No nulo; Fecha de la ultima conexin del usuario a la aplicacin Activado o desactivado del acceso de un usuario a la aplicacin (S/N) N: Acceso permitido, S: Acceso no permitido

3.2

Paquetes y Triggers para el Cifrado de Contraseas

La capacidad del cifrado del campo Contrasea de usuarios del sistema de seguridad es una mejora deseable pero no obligatoria de implementacin. Se considera que una clave est grabada de forma cifrada cuando tiene el siguiente formato: A_PASSWORD = {MD5} + firmaMD5(<valor contrasea en claro>) Para su gestin se ha ampliado los componentes de base de datos en:

Pgina 12 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

1. Creado nuevo paquete de base de datos PKG_SEGU con los mtodos de cifradodescifrado y comprobacin mtodo
function F_CorrectoMD5(pwcifrado in varchar2, pwclaro in varchar2) function F_GenerarMD5(pwclaro in varchar2)

Return
VARCHAR2 (SI/NO) VARCHAR2

Descripcin
Comprueba si la clave en claro corresponde con la clave cifrada segn funcin MD5 de BD Genera la clave cifrada segn funcin MD5 partiendo de un texto (clave en claro) ATENCIN : Su algoritmo ha sido cambiado en esta versin 1.3

function F_UsuarioOK(usuario in varchar2, pwclaro in varchar2)

VARCHAR2 (SI/NO)

Comprueba si el usuario tiene una clave que corresponde con la almacenada en el sistema. Admite tanto claves cifradas como en claro.

2. Creado 2 Triggers en la tabla SEGU_USUARIOS que mantienen la columna A_PASSWORD cifrada en cualquier transacciones tipo INSERT como UPDATE SEGU_INSERT_USU SEGU_UPDATE_USU mtodo SEGU_INSERT_USU SEGU_UPDATE_USU Descripcin
Almacena A_PASSWORD cifrado y da valor a F_CREAC con SYSDATE Mantiene A_PASSWORD cifrado y da valor a F_MODIF con SYSDATE

4 Componentes de acceso al Sistema de seguridad


Los componentes de acceso al sistema de seguridad se compone principalmente en dos partes: Autorizacin y Autenticacin. Se han aadido otras dos partes: AutenticacionLigera y AutorizacionLigera similares a las dos anteriores pero que utilizan ejb sin estado. Todas las partes estn implementadas en una librera con los mtodos que se pueden invocar y clases que lo implementan.

4.1

Componente de Autenticacin

La clase Autenticacin es la encargada de implementar el control de acceso de los usuarios de la aplicacin. Estos usuarios son usuarios lgicos que deben estar dados de alta en el sistema con su contrasea y aplicaciones a las que puede acceder.

Pgina 13 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

Este componente hace transparente al sistema donde est grabada esa informacin, es decir, esta informacin pudiera estar en un directorio LDAP o, como est actualmente en esta versin, almacenada en una base de datos. A continuacin pasamos a describir los mtodos de los que consta:

4.1.1 EjbFactoryAutenticacion

Esta clase es la encargada de ocultar la complejidad de la llamada al EJB proporcionando distintos tipos de acceso al mismo: Conexin Local, Conexin Remota, etc.
Mtodos EjbFactoryAutenticacion () Estado En Uso Notas Constructor para establecer una conexin local con el ejb de autenticacin al esquema de Base de Datos de seguridad por defecto Constructor para establecer una conexin local con el ejb de autenticacin al esquema de Base de Datos de seguridad indicado Parmetros : String nombreClaveDataSource: Nombre que referencia al DataSource del Esquema de Datos de seguridad con el que se desea establecer la conexin.

EjbFactoryAutenticacion ( String nombreClaveDataSource)

En Uso

EjbFactoryAutenticacion ( String host, String port, String usr, String name, String pwd)

En Uso

Constructor para establecer una conexin remota con el ejb de autenticacin al esquema de Base de Datos de seguridad por defecto Parmetros :

String host: ip o nombre del servidor de aplicaciones String port: puerto rmi el que escucha el servidor. String name: nombre del componente de autenticacion String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones.

EjbFactoryAutenticacion ( String host, String port, String name, String usr, String pwd, String nombreClaveDataSource)

En Uso

Constructor para establecer una conexin remota con el ejb de autenticacin a la referencia al DataSource pasado por parmetro Parmetros : String host: ip o nombre del servidor de aplicaciones String port: puerto rmi el que escucha el servidor. String name: nombre del componente de autenticacion String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones. String nombreClaveDataSource: Nombre que referencia al DataSource del Esquema de Datos de seguridad con el que se desea establecer la conexin.

Pgina 14 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

EjbFactoryAutenticacion( String direccion, String usr, String pwd)

En Uso

Constructor para establecer una conexin remota con el ejb de autenticacin a la DataSource por defecto Parametros : String direccion: Direccion completa (URL) del componente de seguridad. String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones.

EjbFactoryAutenticacion( String direccion, String usr, String pwd, String nombreClaveDataSource)

En Uso

Constructor para establecer una conexin remota con el ejb de autenticacin a la referencia al DataSource pasado por parmetro Parametros : String direccion: Direccion completa (URL) del componente de seguridad. String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones. String nombreClaveDataSource: Nombre que referencia al DataSource del Esquema de Datos de seguridad con el que se desea establecer

public: Autenticacion getAutenticacion ()

En Uso

Mtodo para obtener un objeto autenticacin del sistema de seguridad indicado por el constructor. Valor devuelto: Objeto de tipo Autenticacin

public void cerrar()

En Uso

Mtodo para cerrar el contexto usado para localizar el EJB y liberar los procesos. throws javax.naming.NamingException

4.1.2 Autenticacion
Mtodo Estado Notas Comprueba que el usuario tiene acceso a la aplicacin y recupera los datos del usuario, as como su mapa de extensiones (ver atributo extensiones en apartado 4.3.1 Clase Usuario). Parmetros: public Usuario validar (String usuario, String password, String aplicacion) String usuario : Cdigo de usuario En Uso String password : contrasea String aplicacion : Cdigo de aplicacin Valor devuelto: Objeto de tipo Usuario (Ver apartado 4.3.1 Clase Usuario) throws = RemoteException

Pgina 15 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
Devuelve la clave del usuario poseedor de un DNI Parmetros: public String getUsuarioPorDNI(String dni) En Uso String dni : DNI del usuario Valor devuelto: C_USR_ID (Identificador de usuario) throws = RemoteException, SQLException Almacena o actualiza la clave de un usuario. Parmetros: public void setPassword(String usuario, String password) En Uso String usuario : Cdigo de usuario String password : Nueva Clave Usuario throws = RemoteException, SQLException Almacena o actualiza la fecha de ltima conexin del usuario a una aplicacin dada. Parmetros: public void setFechaConexion(String aplicacion, String usuario, Date fecha) En Uso String aplicacion : Cdigo de aplicacin String usuario : Cdigo de usuario Date fecha : Fecha de conexin a la aplicacin throws = RemoteException, SQLException Comprueba que el password es correcto para el usuario segn el directorio de usuarios configurado por defecto Parmetros: public boolean validarLDAP(String usuario,String password) En Uso String usuario : Cdigo de usuario String password : password Valor devuelto: trae : clave correcta, false : clave incorrecta throws = RemoteException, Exception Recupera los datos del usuario segn el directorio de usuarios configurado por defecto Parmetros: String usuario : Cdigo de usuario public Usuario getDatosUsuarioLDAP(String usuario, String aplicacion) En Uso String aplicacion : Cdigo de aplicacin (no usado actualmente) Valor devuelto: Objeto de tipo Usuario (Ver apartado 4.3.1 Clase Usuario) throws = RemoteException, Exception Obtiene los datos del usuario, su mapa de extensiones (ver atributo extensiones en apartado 4.3.1 Clase Usuario) y su rol para una aplicacin dada. Parmetros: public Usuario getDatosUsuario(String usuario, String aplicacin) String usuario : Cdigo de usuario En Uso String aplicacion : Cdigo de aplicacin Valor devuelto: Objeto de tipo Usuario (Ver apartado 4.3.1 Clase Usuario) throws = RemoteException, SQLException Recupera los datos del usuario segn usuario-contrasea (que puede estar cifrada) as como su mapa de extensiones (ver atributo extensiones en apartado 4.3.1 Clase Usuario). Parmetros:

public Usuario getUsuarioValidado(String usuario, String password)

En Uso

Pgina 16 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
String usuario : Cdigo de usuario String password : Valor de la contrasea en claro Valor devuelto: Objeto de tipo Usuario (Ver apartado 4.3.1 Clase Usuario) throws = RemoteException En Uso Recupera los datos del usuario SIN comprobar contraseas as como su mapa de extensiones (ver atributo extensiones en apartado 4.3.1 Clase Usuario). Parmetros: public Usuario getUsuarioNoValidado(String usuario) String usuario : Cdigo de usuario String password : Valor de la contrasea (NO USADO) Valor devuelto: Objeto de tipo Usuario (Ver apartado 4.3.1 Clase Usuario) throws = RemoteException

Pgina 17 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

4.2

Componente de Autenticacin ligero de tipo Stateless

Al ser de tipo stateless (sin estado), no guarda el estado ni se instancia en funcin de la fuente de datos. Utiliza la fuente de datos por defecto: jdbc/SeguPoolDS. Nombre ejb de despliegue: AutenticacionLigero Interface del home: es.jcyl.cf.ejb.autenticacion.AutenticacionLigeroHome Interface remota: Autenticacin) es.jcyl.cf.ejb.autenticacion.Autenticacion (La misma que el ejb

Clase del ejb: es.jcyl.cf.ejb.autenticacion.AutenticacionBean (La misma que el ejb Autenticacin) La interface remota y la implementacin son las mismas que el ejb de autenticacin. Ver apartado Autenticacion para descripcin de los mtodos.

4.2.1 EjbFactoryAut
Esta clase es la encargada de ocultar la complejidad de la llamada a los EJB ligeros de autenticacin y autorizacin Para acceder a los ejb AutenticacionLigero y AutorizacionLigero se pueden utilizar los mtodos estticos de esta clase sin necesidad de especificar la fuente de datos. No es necesario liberar las referencias. Para cada direccin distinta (host, port y name) se guarda una referencia a los ejb y al contexto en mapas estticos la primera vez que se utilizan de modo que se comparten para toda la aplicacin.
Mtodos getAutenticacion ( String host, String port, String name, String usr, String pwd) Estado En Uso Notas Mtodo esttico para obtener una conexin remota con el ejb de autenticacin al esquema de Base de Datos de seguridad por defecto Las referencias al ejb se guardan en un mapa esttico usando como clave la direccin (host, puerto y componente de seguridad), de modo que si ya existe la referencia, se reutiliza para no tener que buscarla de nuevo. El contexto remoto utilizado para buscar los ejb tambin se guardan en un mapa esttico usando como clave la direccin, de modo que se comparte entre autenticacin y autorizacin, para no crearlo de nuevo. Parmetros :

String host: ip o nombre del servidor de aplicaciones String port: puerto rmi el que escucha el servidor. String name: nombre del componente de autenticacion String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones.

getAutorizacion ( String host, String port, String name, String usr,

En Uso

Mtodo esttico para obtener una conexin remota con el ejb de autorizacin al esquema de Base de Datos de seguridad por defecto Las referencias al ejb se guardan en un mapa esttico usando como clave la direccin (host, puerto y

Pgina 18 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
String pwd) componente de seguridad), de modo que si ya existe la referencia, se reutiliza para no tener que buscarla de nuevo.

Parmetros :

String host: ip o nombre del servidor de aplicaciones String port: puerto rmi el que escucha el servidor. String name: nombre del componente de autorizacin String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones.

setCLASE_FACTORY(String claseFactory)

No se usa.???

Mtodo esttico para establecer el nombre de la clase que se utiliza para crear el contexto inicial para buscar los ejbs (por defecto se usa com.evermind.server.rmi.RMIInitialContextFactory). Si se invoca a este mtodo despus de haber obtenido referencias a algn ejb para un host-port-name, no tendr ningn efecto sobre ese ejb ni ninguno de la misma direccion ya que el contexto se cachea en memoria la primera vez, para cada direccin (host, puerto y componente de seguridad) distinta

Ejemplo de uso de la factora:

String host = <mquina dir IP donde est desplegado el componente de Seguridad> String port = < puerto donde escucha el servidor OC4J con el protocolo ormi>

String componente = < nombre con que se ha registrado el componente> String user = <usuario para poder acceder al servidor OC4J con el protocolo ormi> String password = <password para poder acceder al servidor OC4J>

String usuarioAplicacion = <Codigo del usuario que se conecta al sistema> String passwordAplicacion = <Password introducido>

.... Autenticacion objAutenticacion = EjbFactoryAut.getAutenticacion( (host, port, componente, user, password);

Usuario usuario = objAutenticacion.validar(usuarioAplicacion, passwordAplicacion, nombreAplicacion);

//Comprobamos si el usuario era correcto if (usuario == null) {

Pgina 19 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
// Enviar Error usuario no vlido }

//Si el usuario es correcto y se va a permitir el acceso, antes obtenemos los parametros de usuario:

Autorizacion objAutorizacion = EjbFactoryAut.getAutorizacion( host, port, componente, user, password); ....

4.3

Componente Autorizacin

Ese componente permite consultar las restricciones de acceso del usuario a las acciones permitidas. Para ello utiliza el rol que ste posee para una aplicacin en concreto. Una vez el usuario ha pasado el control de acceso con el componente anterior de Autenticacin, se le extrae su rol y con el la lista de funciones a las que tiene acceso. Estas funciones a las que tiene acceso el usuario se agrupan en un men que construye el propio componente, y por lo tanto, men personalizado para el usuario autenticado. A continuacin pasamos a describir los mtodos de los que consta:

4.3.1 EjbFactoryAutorizacion

Mtodo EjbFactoryAutorizacion ()

Estado En Uso

Notas Constructor para establecer una conexin local con el ejb de autorizacin al sistema de seguridad por defecto. Constructor para establecer una conexin local con el ejb de autorizacin al esquema de Base de datos de seguridad indicado Parmetros : String nombreClaveDataSource: Sistema de seguridad con el que se desea establecer la conexin Constructor para establecer una conexin remota con el ejb de autorizacin al al esquema de Base de datos de seguridad por defecto Parametros :

EjbFactoryAutorizacion (String nombreClaveDataSource)

En Uso

EjbFactoryAutorizacion ( String host, String port, String name, String user, String pwd)

En Uso

String host: ip o nombre del servidor de aplicaciones String port: puerto rmi el que escucha el servidor. String name: nombre del componente de autorizacin String usr: usuario para establecer la conexin, autorizado a nivel de servidor de aplicaciones.

Pgina 20 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones. Constructor para establecer una conexin remota con el ejb de autorizacin al esquema de Base de datos de seguridad por defecto Parametros : EjbFactoryAutorizacion ( String host, String port, String name, String user, String pwd, String nombreClaveDataSource) String host: ip o nombre del servidor de aplicaciones String port: puerto rmi el que escucha el servidor. String name: nombre del componente de autorizacin String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones. String nombreClaveDataSource: nombre de la fuente de datos que se debe conectar Constructor para establecer una conexin remota con el ejb de autorizacin al DataSource por defecto. Parametros : En Uso String direccion: Direccion completa (URL) del componente de seguridad. String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de servidor de aplicaciones. Constructor para establecer una conexin remota con el ejb de autorizacin al nombreClaveDataSource pasado por parametro EjbFactoryAutorizacion( String direccion, String usr, String pwd, String nombreClaveDataSource) Parametros : En Uso String direccion: Direccion completa (URL) del componente de seguridad. String usr: usuario para establecer la conexin, autorizado a nivel de serv. de aplicaciones. String pwd: Password del usuario con el que se establece la conexin, autorizado a nivel de serv. de aplicaciones. Mtodo para obtener un objeto autorizacin del sistema de seguridad indicado por el constructor. public: Autorizacion getAutorizacion () En Uso Valor devuelto : Objeto de tipo Autorizacion Mtodo para cerrar el contexto usado para localizar el EJB y liberar los procesos. throws javax.naming.NamingException

En Uso

EjbFactoryAutorizacion( String direccion, String usr, String pwd)

public void cerrar()

En Uso

Pgina 21 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

4.3.2 Autorizacion
Mtodo Estado Notas Recupera un objeto Menu y en su propiedad funciones la cadena de caracteres formateada segn la utiliza el TigraMenu Parmetros : public Menu getMenu (String usuario, String rol, String aplicacion) En Uso String usuario : Codigo de usuario String rol : Codigo de grupo String aplicacion : Cdigo de aplicacion Valor devuelto: Objeto menu.

Recupera el rol asignado a un usuario para una aplicacin Parmetros : public String getGrupo (String usuario, String aplicacion) En Uso String usuario : Cdigo de usuario String aplicacion : Cdigo de aplicacion Valor devuelto: Cdigo de Grupo Recupera los grupos definidos para la aplicacin segn las funciones asignadas al mismo Parmetros : public Hashtable getGrupos (String aplicacion) En Uso String aplicacion : Cdigo de aplicacion Valor devuelto: Hashtable con pares C_GRUPO, D_GRUPO Recupera los usuarios asignados a una aplicacin Parmetros : public HashMap getUsuarios (String aplicacion) En Uso String aplicacion : Cdigo de aplicacin Valor devuelto: HashMap con pares (CodigoUsuario, CodigoGrupo) Recupera las aplicaciones activas (B_ACTIVO = 'S' y B_BORRADO = 'N') a las que tiene acceso un usuario public HashMap getAplicaciones (String usuario) Parmetros : En Uso String usuario : Codigo de usuario Valor devuelto: HashMap con pares (CodigoAplicacion, DescripcionAplicacion) NO USAR public HashMap getPermisos (String usuario) Deprecated Comprueba si el usuario est autorizado a ejecutar la funcin de la aplicacin Parmetros : String usuario : Codigo de usuario public String estaAutorizado (String usuario, String rol, String aplicacion, String funcion) NO USAR Deprecated String rol : Codigo de grupo String aplicacion : Cdigo de aplicacion String funcion : Codigo de function Valor devuelto: 1 Est autorizado public Hashtable getFuncionesPantalla (String NO USAR 0 Caso contrario FUNCION SIN IMPLEMENTAR

Recupera las funciones no incluidas en men de la

Pgina 22 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
apli, String rol) Deprecated aplicacin dada y para el rol indicado Parmetros: String apli : Cdigo de aplicacion String rol : Cdigo de grupo Valor devuelto: Hashtable (CodigoFuncion, Accion) con las columnas

Nota : La accin devuelta contiene nicamente el nombre del action y est eliminados los parmetros al mismo. Recupera las funciones de men de la aplicacin dada y para el rol indicado Parmetros: String apli : Cdigo de aplicacion public Hashtable getFuncionesMenu (String apli, String rol) NO USAR Deprecated String rol : Cdigo de grupo Valor devuelto: Relacin de funciones en formato Hashtable con las columnas (CodigoFuncion, Accion) Nota : La accin devuelta contiene nicamente el nombre del action y est eliminados los parmetros al mismo. Recupera las funciones de men de la aplicacin dada y para el rol indicado y que son hijas de la funcin padre pasada por parmetro Parmetros: getFuncionesMenu (String apli, String rol, String padre) NO USAR Deprecated String apli : Cdigo de aplicacin String rol : Cdigo de grupo String padre : Cdigo de opcin de men padre Valor devuelto: Relacin de funciones en formato Hashtable con las columnas (CodigoFuncion, Objeto de tipo FUNCION) Devuelve un conjunto de pares de atributo valor ( parametro-valor) con los parmetros de usuario para una aplicacin determinada public HashMap getParamus (String usr, String apli) NO USAR Deprecated Parmetros : String usr : Codigo de usuario String apli : Cdigo de aplicacin Valor devuelto: Relacin de funciones en formato HashMap con las columnas (CodigoAtributo, Valor) Devuelve un conjunto de pares de atributo valor ( parametro-valor) con los parmetros de la aplicacin Parmetros: public HashMap getParamaps (String apli) En Uso String apli : Cdigo de aplicacin Valor devuelto: Relacin de funciones en formato HashMap con las columnas (CodigoAtributo, Valor) Devuelve una lista ordenada de las opciones de menu principal para un rol dado de una aplicacin dada por parmetros. public ArrayList getEstructura (String apli, String rol) Parmetros: En Uso String apli : Cdigo de aplicacin String rol : Cdigo de grupo Valor devuelto: Array de objetos FUNCION ordenada segn el rbol de mens definido para ese rol.

Pgina 23 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
Devuelve una lista ordenada de las opciones del tipo de men pasado por parmetro para un rol dado de una aplicacin dada por parmetros. Parmetros: public ArrayList getEstructura (String apli, String rol, String tmenu) En Uso String apli : Cdigo de aplicacin String rol : Cdigo de grupo String tmenu : Tipo de Menu Valor devuelto: Array de objetos FUNCION ordenada segn el rbol de mens definido para ese rol. Recupera todas las funciones definidas para la aplicacin dada y para el rol indicado Parmetros: String apli : Cdigo de aplicacion public Hashtable getFuncionesTodas(String apli, String rol) En Uso String rol : Cdigo de grupo Valor devuelto: Relacin de funciones en formato Hashtable con las columnas (CodigoFuncion, Accion) Nota : La accin devuelta contiene nicamente el nombre del action y est eliminados los parmetros al mismo Recupera las funciones del tipo de men pasado por parmetro de la aplicacin dada y para el rol indicado Parmetros: String apli : Cdigo de aplicacion public Hashtable getFuncionesTipo(String apli, String rol, String tipo) String rol : Cdigo de grupo En Uso String tipo : Tipo de Menu Valor devuelto: Relacin de funciones en formato Hashtable con las columnas (CodigoFuncion, Accion) Nota : La accin devuelta contiene nicamente el nombre del action y est eliminados los parmetros al mismo Devuelve un conjunto de pares de atributo valor (parametro-valor) con los parmetros definidos para la aplicacin y su valor que le corresponde. Este valor puede ser (y en este orden de preferencia) : 1.- El valor definido en el propio usuario. public HashMap getValoresParametros(String usr, String apli) 2.-El valor definido en el grupo de usuarios al que pertenece. En Uso 3.-El valor por defecto de la aplicacin, Parmetros : String usr : Codigo de usuario String apli : Cdigo de aplicacin Valor devuelto: Relacin de funciones en formato HashMap con las columnas (CodigoAtributo, Valor) Recupera todas las aplicaciones (activas o no) a las que tiene acceso un usuario public HashMap getTodasAplicaciones (String usuario) Parmetros : En Uso String usuario : Codigo de usuario Valor devuelto: HashMap con pares (CodigoAplicacion, DescripcionAplicacion) public HashMap getTodasAplicaciones () En Uso Recupera todas las aplicaciones (activas o no) dadas de

Pgina 24 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
alta. Valor devuelto: HashMap con pares (CodigoAplicacion, DescripcionAplicacion) Recupera los parmetros extra de una funcin. public HashMap getExtFuncion (String funcionId) Parmetros : En Uso String funcionId: cdigo de la funcin Valor devuelto: HashMap con pares (parmetro,valor)

4.4

Componente de Autorizacin ligero de tipo Stateless

Al ser de tipo stateless (sin estado), no guarda el estado ni se instancia en funcin de la fuente de datos. Utiliza la fuente de datos por defecto: jdbc/SeguPoolDS. Nombre ejb de despliegue: AutorizacionLigero Interface del home: es.jcyl.cf.ejb.autorizacion.AutorizacionLigeroHome Interface remota: Autenticacin) Clase del ejb: Autorizacin) es.jcyl.cf.ejb.autorizacion.Autorizacion (La (La misma misma que que el el ejb ejb

es.jcyl.cf.ejb.autorizacion.AutorizacionBean

La interface remota y la implementacin son las mismas que el ejb de autorizacin. Ver apartado Autorizacion para descripcin de los mtodos. En el apartado EjbFactoryAut se describe la factora que se utiliza para acceder de forma sencilla a este componente.

4.5

Componente de Gestin de Usuarios

El Componente de Gestin de Usuarios consiste en una lgica de negocio distribuible con las principales opciones para el mantenimiento de usuarios y su perfil de acceso a las aplicaciones. Su arquitectura es equivalente al componente de acceso (autenticacin y autorizacin). Su invocacin se realiza a travs de una clase Factoria la cual instancia un EJB Statefull. A continuacin paso a describir su API de acceso.

4.5.1 EjbFactoryGUsuarios
Metodo public EjbFactoryGUsuarios( String direccion, String usr, String pwd, String usrExterno, String clavepool): Estado En Uso Notas Constructor Principal de acceso Remoto al EJB Parmetros : in String direccion URL con la direccion del EJB a instanciar (PROVIDER_URL) in String usr usuario del servidor de aplicaciones (SECURITY_PRINCIPAL) in String pwd clave del servidor de aplicaciones (SECURITY_CREDENTIALS) in String usrExterno usuario externo que instancia el EJB y realizar las

Pgina 25 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
operaciones in String clavepool clave de la base de datos que va a utilizar public EjbFactoryGUsuarios( String usuExterno, String clavepool): En Uso Constructor para establecer una conexin local con el ejb de autorizacion al sistema de seguridad indicado Parmetros : in String usuExterno usuario externo que instancia el EJB y realizar las operaciones in String clavepool clave de la base de datos que va a utilizar Constructor para establecer una conexin remota con el ejb de autorizacin al sistema de seguridad por defecto Parmetros : in String host ip o nombre del servidor de aplicaciones in String port puerto RMI el que escucha el servidor. in String name Nombre del componente a utilizar in String usr usuario del servidor de aplicaciones (SECURITY_PRINCIPAL) in String pwd clave del servidor de aplicaciones (SECURITY_CREDENTIALS) in String usrExterno usuario externo que instancia el EJB y realizar las operaciones Constructor para establecer una conexin remota con el ejb de autorizacin al sistema de seguridad por defecto Parmetros : in String direccion URL con la direccin del EJB (PROVIDER_URL) in String usr usuario del servidor de aplicaciones (SECURITY_PRINCIPAL) in String pwd clave del servidor de aplicaciones (SECURITY_CREDENTIALS) in String usrExterno usuario externo que instancia el EJB y realizar las operaciones Constructor para establecer una conexin remota con el ejb de autorizacin al sistema de seguridad por defecto Parmetros : in String host ip o nombre del servidor de aplicaciones in String port puerto RMI el que escucha el servidor. in String name Nombre del componente a utilizar in String usr usuario del servidor de aplicaciones (SECURITY_PRINCIPAL) in String pwd clave del servidor de aplicaciones (SECURITY_CREDENTIALS) in String usrExterno usuario externo que instancia el EJB y realizar las operaciones in String sistema de seguridad al que se desea autorizar. En Uso Mtodo para obtener un objeto con el sistema de seguridad indicado. Valor devuelto : GUsuarios objeto GUsuarios devuelto.

Public EjbFactoryGUsuarios( String host, String port, String name, String usr, String pwd, String usrExterno):

En Uso

Public EjbFactoryGUsuarios( String direccion, String usr, String pwd, String usrExterno):

En Uso

public EjbFactoryGUsuarios( String host, String port, String name, String usr, String pwd, String usrExterno, String clavepool):

En Uso

public getEjb_usuarios():GUsuarios

4.5.2 GUsuarios
Metodo public setUsuario( SeguUsuariosOT Usuario):int Estado En Uso Notas Aade o actualiza los datos del usuario. Excluye el campo PASSWORD Parmetros : in SeguUsuariosOT Usuario OT con los datos a insertar Valor devuelto :

Pgina 26 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
int El numero de filas insertadas o actualizadas (1 en caso correcto) throws=RemoteException, GUsuException Recupera los datos de un usuario. Excluye el campo PASSWORD

public getUsuario( String c_usuario):SeguUsuariosOT

En Uso

Parmetros : in String c_usuario Clave de usuario Valor devuelto : Usuario OT con los datos recuperados (nul no existe) throws=RemoteException, GUsuException Elimina los datos de un usuario y en cascada los parmetros del mismo Parmetros : in String c_usuario Clave de usuario Valor devuelto : int El numero de filas borradas (1 en caso correcto) throws=RemoteException, GUsuException Recupera el valor del parmetro solicitado Parmetros : in String c_usuario Clave de usuario in String c_apli Clave de aplicacin in String c_parametro Clave del parmetro solicitado Valor devuelto : String Valor del parmetro. (Null si no existe) throws=RemoteException, GUsuException Establece un valor de un parmetro de usuario en una aplicacin Parmetros : in String c_usuario Clave de usuario in String c_apli Clave de aplicacin in String c_parametro Cdigo de parmetro in String d_valor Valor introducido para el parmetro Valor devuelto : int El numero de registros afectados (1 en caso correcto) throws=RemoteException, GUsuException Elimina un parmetro de usuario Parametros : in String c_usuario Clave de usuario in String c_apli Clave de aplicacin in String c_parametro Cdigo de parmetro Valor devuelto : int El numero de registros afectados (1 en caso correcto) throws=RemoteException, GUsuException Aade o actualiza un usuario en una aplicacin dentro de un rol (grupo) dado Parmetros : in String c_usuario Clave de usuario in String c_apli Clave de aplicacin in String c_grupo Clave de grupo de usuarios Valor devuelto : int El numero de filas insertadas (1 en caso correcto) throws=RemoteException, GUsuException Parametros :

public borrarUsuario( String c_usuario):int

En Uso

public getParametroUsuario( String c_usuario, String c_apli, String c_parametro):String

En Uso

public setParametroUsuario( String c_usuario, String c_apli, String c_parametro, String d_valor):int

En Uso

public borrarParametroUsuario( String c_usuario, String c_apli, String c_parametro):int

En Uso

public setUsuarioAplicacion( String c_usuario, String c_apli, String c_grupo):int

En Uso

public getUsuarioAplicacion(

En Uso

Pgina 27 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
String c_usuario, String c_apli): SeguAsignacionUsuariosOT in String c_usuario Clave de usuario in String c_apli Clave de aplicacin Recupera los datos de la asignacin de un usuario a una aplicacin Valor devuelto :s OT con los valores (Null en caso de no existir) throws=RemoteException, GUsuException Desvincula el usuario de la aplicacin Parmetros : in String c_usuario Clave de usuario in String c_apli Clave de aplicacin Valor devuelto : int El numero de filas afectadas (1 en caso correcto) throws=RemoteException, GUsuException Activa o desactiva el acceso del usuario a la aplicacin Parmetros : in String c_usuario Clave de usuario in String c_apli Clave de aplicacin in String estado Clave para el borrado lgico (S borrado logico, N no borrado (ACTIVO) Valor devuelto : int El numero de filas afectadas (1 en caso correcto) throws=RemoteException, GUsuException Devuelve todos los usuarios del sistema (valor c_usr_id)

public borrarUsuarioAplicacion( String c_usuario, String c_apli):int

En Uso

public setborradoLogicoUsuario( String c_usuario, String c_apli, String estado):int

En Uso

public ArrayList getUsuarioTodos()

En Uso

throws RemoteException, GUsuException;

4.6

Clases utilizadas para el intercambio de informacin

4.6.1 Clase Usuario


La clase usuario tiene como objetivo recuperar de la base de datos la informacin relativa a un usuario del sistema de seguridad. Se trata de un objeto-valor que recupera los datos de un usuario que se conecta a una aplicacin.

Pgina 28 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
od Clases de Diseo Serializable Usuario a_password: String am pliaciones: HashM ap c_correo: String c_dni: String c_nif: String c_unidad_id: String c_usr_id: String d_apell: String d_nom : String datoSeguridad: String extensiones: HashM ap f_ultim a_conexion: Date m enu: String rol: String serialVersionUID: long = Util.getPropert...

Atributo c_usr_id rol

Tipo String String

Descripcin Cdigo de Usuario Cdigo de grupo de usuario Cadena de texto con el men de opciones en formato TigraMenu Apellidos del Usuario Nombre de Usuario Valor del campo D_SEGURIDAD Clave del Usuario. N de DNI Letra del NIF Fecha en la que se conect por ultima vez a la aplicacin

Notas

menu d_apell d_nom datoSeguridad a_password c_dni c_nif f_ultima_conexion

String String String String String String String String

NO UTILIZADO ACTUALMENTE Descriptivo. Mostrado en la cabecera de las pginas Descriptivo. Mostrado en la cabecera de las pginas

Puede ser necesario para poder invocar a otras aplicaciones sin tener que solicitarlo de nuevo Usado para autenticaciones va Certificado Digital Usado para autenticaciones va Certificado Digital Informativo al usuario para comprobar suplantaciones (*) Nota Desde la version (1.3) utilizado para cargar todos los campos del LDAP en la entrada usuario.

extensiones ampliaciones c_unidad_id c_correo

HashMap HashMap String String Propiedades ampliadas para el usuario. Unidad administrativa Cuenta de correo electrnico

Se rellena con los registros, para ese usuario, de la tabla SEGU_USUARIOS_EXT. No obligatorio No obligatorio

Pgina 29 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

4.6.2 Clase Funcion

Esta clase que almacena las caractersticas de una funcin dentro de un men.
Serializable Funcion CFuncionId: String CFuncionPadre: String NProfundidad: int NOrden: int DDescripcion: String BMenu: String DProceso: String DNombre: String DClasificacion: String

Atributo CFuncionId CFuncionPadre NProfundidad NOrden DDescripcion BMenu

Tipo String String int int String String

Descripcin Cdigo de funcin Cdigo de funcin padre. Profundidad en el rbol de men Orden dentro de la misma profundidad Etiqueta de la funcin Tipo de men donde aparece la funcion

Notas

Por defecto: S si es opcin de men, N funcin de pantalla Resto de tipos definidos en la tabla SEGU_TP_MENUS

DProceso DNombre DClasificacion

String String String

Nombre de la accin que desencadena Nombre de la funcin NO UTILIZADA MOMENTOS EN ESTOS

Pgina 30 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

4.6.3 Clase SeguUsuariosOT


od Clases de Diseo java.io.Serializable SeguUsuariosOT # # # # # # # # # # # # # # # # # # # cUsrId: String aPassword: String dApell: String dNom : String dSeguridad: String cGrupoId: String cAplicacionId: String cDni: String cNif: String cParam etro: String dValor: String cUsrCreac: String fCreac: Date cUsrM odif: String fM odif: Date bActivo: String cUnidadId: String cCorreo: String am pliacion: HashM ap serialVersionUID: long = Util.getPropert...

Atributo cUsrId aPassword dApell dNom dSeguridad cGrupoId cAplicacionId cDni

Tipo String String String String String String String String

Descripcin Cdigo de Usuario Contrasea Apellidos Nombre Rol de acceso para una aplicacin en concreto Aplicacin en la que est operando el Usuario Numero de DNI

Notas

Utilizado junto con cNif para la autenticacin va cerficados digitales Utilizado con criterio de bsqueda o dato de alta

cNif cParametro dValor cUsrCreac fCreac cUsrModif fModif bActivo cUnidadId cCorrreo ampliaciones

String String String String Date String Date String String String HashMap

Letra del DNI Clave del parmetro con el que quiere operar Valor del parmetro con el que quiere operar. Usuario externo que insert el registro en la ficha Fecha de creacin del usuario en el sistema Usuario externo que realiz la ultima modificacin en la ficha Fecha de ultima modificacin de los datos del usuario

Cuenta de correo electrnico Propiedades ampliadas para el usuario.

Se rellena con los registros, para ese usuario, de la tabla SEGU_USUARIOS_EXT.

Pgina 31 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

4.6.4 Clase SeguAsignacionUsuariosOT


od Clases de Diseo java.io.Serializable SeguAsignacionUsuariosOT # # # # # cUsrId: String cAplicacionId: String cGrupoId: String fUltim aConexion: Date bBorrado: String serialVersionUID: long = Util.getPropert...

Atributo cUsrId cAplicacionId cGrupoId fUltimaConexion bBorrado

Tipo String String String Date String

Descripcin Cdigo de Usuario Aplicacin en la que est operando el Usuario Rol de acceso para la aplicacin Fecha de ultimo acceso a la aplicacin Borrado lgico

Notas

Usado para Activar o desactivar el acceso del usuario al sistema

4.7 Ficheros de propiedades utilizados personalizar nuestro sistema de seguridad


Los componentes de acceso sistema de seguridad tiene definidos una serie de ficheros de propiedades (del tipo clave=valor) que nos permitirn flexibilizar ciertos aspectos de su funcionamiento.

4.7.1 Definicin de distintas fuentes de datos: segu.properties

Este fichero (segu.properties) se utiliza con que conjunto de fuentes de datos se puede conectar el componente SistSegu. Por defecto el sistema de seguridad de conecta a una fuente de datos llamada jdbc/SeguPoolDS. Si se desea que el sistema se conecte a distintas fuentes de datos deberemos indicarlo en este fichero y adems especificarlo tanto en la clase EjbFactoryAutenticacion como EjbFactoryAutorizacion mediante su constructores:

Pgina 32 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
public EjbFactoryAutorizacion(String host,String port,String name,String usr,String pwd, String sistSegu) public EjbFactoryAutenticacion(String host,String port, String name,String usr,String pwd, String sistSegu)

Ejemplo de contenido:
pool-name=jdbc/SeguPoolDS pool-aaa=jdbc/SeguAAPoolDS pool-bbb=jdbc/SeguBBPoolDS pool-ccc=jdbc/SeguCCPoolDS pool-ddd=jdbc/SeguDDPoolDS

4.7.2 Definicin del fichero de logs : log4jconf.properties

Este fichero (log4jconf.properties) se utiliza para definir los parmetros del sistema de log basado en el componente log4j. Ejemplo de contenido:
log4j.rootLogger=debug, ROL

## Configuracion de los mensajes de logs a consola con un nivel de debug. log4j.appender.ROL=org.apache.log4j.ConsoleAppender

log4j.appender.ROL.layout=org.apache.log4j.PatternLayout log4j.appender.ROL.layout.ConversionPattern=[%d{dd MMM yyyy HH:mm:ss}] : %m : %l %n

4.7.3 Definicin del servicio de directorio LDAP : LDAPUsuarios.properties

Este fichero (LDAPUsuarios.properties) se utiliza para definir la direccin y estructura del servicio de directorios utilizado si se requiere usar una autenticacin basada en un directorio LDAP. Los parmetros a definir son:
Propiedad LDAP_HOST LDAP_PORT Descripcin Maquina (Direccin IP, o DNS) donde reside el servicio de directorios. Puerto para acceder servicio de directorios Ejemplo de Valor localhost 389

Pgina 33 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

LDAP_BASEDN LDAP_RAIZ

Base o rama inicial del directorio consultado Rama a partir de la cual estn ubicados los usuarios

dc=jcyl,dc=es ou=People

LDAP_UID LDAP_PWD LDAP_MANAGERDN LDAP_PW

Nombre del atributo usado como identificador de usuarios Nombre del atributo usado como password de usuarios Entrada para el acceso restringido Contrasea para el acceso restringido

uid userPassword cn=Directory Manager xxxxxxx

4.7.4 Definicin del mapeo Atributos-Datos Usuario: AtribUsuarios.properties


Este fichero (AtribUsuarios.properties) se utiliza para hacer la correspondencia entre los atributos de un usuario del servicio de directorios con los de la clase Usuario. Se utiliza principalmente en el mtodo :
public Usuario getDatosUsuarioLDAP(String usuario, String aplicacion)

Ejemplo de contenido:
uid=c_usr_id mail=datoSeguridad sn=DApell cn=DNom

A partir de esta versin (1.3), todos los campos, tanto mapeados mediante el fichero AtribUsuarios.properties como no, se almacenan en el atributo del objeto Usuario extensiones en el formato java HasMap.

5 Componentes de Gestin del Sistema de Seguridad


5.1 Aplicacin Web de gestin del sistema de seguridad

Incluido en el sistema de seguridad, se dispone de una herramienta de gestin donde poder mantener toda la informacin relativa a seguridad. Esta herramienta consta de :

Mantenimiento y Consulta del catalogo aplicaciones desarrolladas y que requieren un acceso controlado, y por lo tanto seguridad.

Pgina 34 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

Mantenimiento y Consulta de la informacin de los usuarios y sus permisos de acceso a las aplicaciones. Mantenimiento y Consulta del catlogo de funciones en las que se compone cada aplicacin. La asociacin de las funciones que pueden ejecutar cada usuario, en funcin de los roles definidos. Mantenimiento y Consulta de rbol de opciones de la aplicacin para cada grupo de usuarios. Este rbol de opciones se convierte en el men de la aplicacin. Modulo de exportacin para extraer toda la informacin de seguridad en formato Script de Base de Datos, que pueda ser cargada directamente a otro esquema de base de datos

Para mas informacin de esta herramienta vase al manual de usuario suministrado con la propia Aplicacin de Gestin.

5.2

Componente de Gestin de Usuarios

El Componente de Gestin de Usuarios consiste en una lgica de negocio distribuible con las principales opciones para el mantenimiento de usuarios y su perfil de acceso a las aplicaciones. Su arquitectura es equivalente al componente de acceso (autenticacin y autorizacin). Su invocacin se realiza a travs de una clase Factora la cual instancia un EJB Statefull.

5.2.1 Uso de la Gestin de Usuarios dentro de nuestra aplicacin J2EE


El Uso mas adecuado de la Gestin de Usuario en nuestra aplicacin es aplicando los mismos principios que en el componente SistSegu (Autorizacin y Autenticacin). Primeramente se necesita definir en el fichero de propiedades de la aplicacin .\WEB-INF\config\app-config.properties los parmetros que necesitamos para su localizacin y que son equivalentes a las variables SEGU_HOST, SEGU_PORT, SEGU_USER, SEGU_PASSWORD, SEGU_APP_SEGURIDAD, aunque con nuevos nombres. Se recomienda no reutilizar ninguna de estas variables, aunque tengan el mismo valor para evitar errores en el caso de desplegar la aplicacin en distintos entornos. Una vez esto, un ejemplo de uso dentro de una aplicacin generada segn los estndares de la Junta de Castilla y Len seria el siguiente:

Pgina 35 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

String host = JCYLConfiguracion.getValor("SEGU_HOST"); String port = JCYLConfiguracion.getValor("SEGU_PORT"); String user = JCYLConfiguracion.getValor("SEGU_USER"); String password = JCYLConfiguracion.getValor("SEGU_PASSWORD"); String componente = JCYLConfiguracion.getValor("SEGU_APP_SEGURIDAD"); String usr_externo = usuario.getUsuario().getC_usr_id(); // Usuario que se ha autenticado JCYLUsuario usuario = (JCYLUsuario)request.getSession().getAttribute (JCYLConfiguracion. NOMBRE_ATRIBUTO_USUARIO); try { ejb = new EjbFactoryGUsuarios(host,port,componente,user,password, usrExterno); if (ejb.getEjb_usuarios() ==null) { XXXXConfigApp.logger.error("Error "+componente+" "+user+" pw=******"); throw new GUsuException(null, null); } // Creando un objeto OT de intercambio SeguUsuariosOT datos = new SeguUsuariosOT(); datos.setaPassword(VALOR PW); datos.setcUsrId(VALOR C_USR); datos.setcGrupoId("VALOR ROL"); datos.setbActivo("S"); datos.setdNom("nombre"); datos.setdApell("apellidos"); datos.setcAplicacionId("aplicacion"); // Invocando a los metodos int res = ejb.getEjb_usuarios().setUsuario(datos); acceso componente ubicado en "+host+" "+port+"

... .. .. ..

try { ejb.getEjb_usuarios().remove(); } catch(Exception re){ errorEx1 = re.getMessage(); } } catch(GUsuException ex) { errorEx1 = ex.getMessage(); errorEx2 = ex.getTextoUsuario(); try { if (ejb != null) ejb.cerrar(); } catch(Throwable e2) { errorEx1 = e2.getMessage(); e2.printStackTrace(); } .... .. ..

Pgina 36 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

6 Uso del sistema de seguridad dentro de nuestra aplicaciones J2EE


El sistema de seguridad propuesto pretende ocultar los detalles de autorizacin y autenticacin que requiere cualquier aplicacin desarrollada. Por ello y en apoyo a este componente se ha desarrollado un Framework y basado a l, un generador de aplicaciones. La aplicacin base generada con esta herramienta implementa, desde el punto de vista de seguridad, las siguientes funciones:

La secuencia de pasos para el control de acceso de usuarios La construccin de forma dinmica de su men de opciones a las que puede acceder y la relacin de opciones de pantalla que puede invocar. La comprobacin previa a la llamada de un action de Struts que asegura que el usuario conectando tiene permiso para ejecutar tal funcin.

6.1

Parmetros para acceder al sistema de seguridad

Las aplicaciones J2EE que usan el sistema de seguridad propuesto necesitan configurar un fichero de propiedades llamado .\WEB-INF\config\app-config.properties con los siguientes parmetros:
Propiedad SISTEMA Descripcin Debe especificarse la clave de 4 Caracteres que identifica la aplicacin y que es la utilizada en el sistema de seguridad. Ejemplo de Valor GECE

SEGU_HOST

Maquina (Direccin IP, o DNS) donde reside el servidor OC4J que contiene los componentes de Seguridad (Acceso REMOTO)

localhost

SEGU_PORT

Puerto para acceder al servidor OC4J como administrador (Acceso REMOTO)

3001

SEGU_USER

Identificacin ante el servidor OC4J (Acceso REMOTO)

admin

SEGU_PASSWORD

Palabra clave (Acceso REMOTO)

Xxxx

SEGU_APP_SEGURIDAD

Nombre de la aplicacin en el servidor donde ha sido desplegado el componente

SistSegu

Pgina 37 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

6.2

Ejemplo de uso : Cdigo de validacin de usuario

Para intentar aclarar el uso de los componente de seguridad dentro de las aplicaciones J2EE adjuntamos el siguiente ejemplo. Este ejemplo se conecta al sistema de seguridad para validar un usuario y extrae funciones del mismo a travs del componente de Autorizacin:

String nombreAplicacion = <Codigo de la aplicacin> String host = <mquina dir IP donde est desplegado el componente de Seguridad> String port = < puerto donde escucha el servidor OC4J con el protocolo ormi>

String componente = < nombre con que se ha registrado el componente> String user = <usuario para poder acceder al servidor OC4J con el protocolo ormi> String password = <password para poder acceder al servidor OC4J>

String usuarioAplicacion = <Codigo del usuario que se conecta al sistema> String passwordAplicacion = <Password introducido>

EjbFactoryAutenticacion ejb = new EjbFactoryAutenticacion(host, port, componente, user, password); Autenticacion objAutenticacion = ejb.getAutenticacion()

Usuario usuario = objAutenticacion.validar(usuarioAplicacion, passwordAplicacion, nombreAplicacion);

//Comprobamos si el usuario era correcto if (usuario == null) { // Enviar Error usuario no vlido }

//Si el usuario es correcto y se va a permitir el acceso, antes obtenemos los parametros de usuario:

Pgina 38 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0
EjbFactoryAutorizacion ejb_aut = new EjbFactoryAutorizacion(host, port, componente, user, password);

Autorizacion objAutorizacion = ejbFactoryAutorizacion.getAutorizacion();

// Recuperar los parmetros de usuario HashMap hmParametrosUsuario = objAutorizacion. getValoresParametros (usuarioAplicacion, nombreAplicacion);

// Recuperar el arraylist de opciones de men ArrayList opcionesMenu = objAutorizacion.getEstructura(nombreAplicacion, usuario.getRol());

.. .. .. ..

Pgina 39 de 40

MANUAL DE USUARIO SISTEMA DE SEGURIDAD PARA APLICACIONES J2EE


V 2.0

7 ANEXO I: Como ampliar la definicin de seguridad de mi aplicacin. Gestin de parmetros de aplicacin


7.1 Introduccin

En muchos desarrollos se necesitan tener un conjunto de parmetros que va a utilizar la aplicacin. Estos parmetros amplan la informacin de seguridad de nuestra aplicacin limitando o condicionando su ejecucin. Para toda esa informacin adicional el sistema de seguridad tiene previsto 3 entidades que permiten almacenar esa informacin y que son: SEGU_PARAM_APLICACIONES SEGU_PARAM_GRUPOS SEGU_PARAM_USUARIOS Y componentes que nos permiten acceder a los mismos desde nuestras aplicaciones que es: public HashMap getValoresParametros(String usr, String apli)

7.2

Alta de parmetros

Todo parmetro que necesitemos manejar en nuestra aplicacin lo debemos de introducir en la tabla SEGU_PARAM_APLICACIONES. La mejor opcin es hacerlo a travs de la herramienta GestSegu. En el momento de darle de alta podemos asignarle un valor. Este valor es que tendrn todos los usuarios que se conecten a esta aplicacin.

7.3

Restringir el valor de los parmetros

Si se necesita restringir el valor de los parmetros definidos anteriormente tenemos 2 posibilidades. 1.- Asignar un valor comn para un perfil de usuarios. Para eso deberiamos crear un nuevo registro en la tabla SEGU_PARAM_GRUPOS indicando el parmetro y el valor particular. 2.- Asignar un valor particular para un usuario. Para esto solo hay que crear el mismo registro en la tabla SEGU_PARAM_USUARIOS Una vez definida todos los parmetros de mi sistema podremos acceder a los mismos cada vez que un usuario inicie sesin. En ese momento y mediante el mtodo anteriormente citado se construye un Array en memoria (concretamente HashMap) con los pares parmetro-valor. Estos pares se construyen respetando los mbitos de valores, es decir, si el valor est definido para ese usuario, lo hereda de su perfil o utiliza el valor por defecto de la aplicacin Pgina 40 de 40

Vous aimerez peut-être aussi