Académique Documents
Professionnel Documents
Culture Documents
Edicin: V 2.0.1
Autor: Unidad de Informtica Corporativa rea de Desarrollo y Mantenimiento Fecha: Septiembre 2006
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
2.1 Diagrama de Componentes Software ............................................................................. 6 2.2 Descripcin de los componentes .................................................................................... 7
3.1 Detalle de Tablas y Columnas ........................................................................................ 9 3.2 Paquetes y Triggers para el Cifrado de Contraseas ................................................... 12
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
Pgina 3 de 40
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
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
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
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)
Pgina 5 de 40
Unos componentes de acceso a esos datos. Este componente posee las mismas clases y mtodos que su equivalente en la versin Base de Datos
Esquema Aplicacion
Componente SistSegu
EJB Autenticacion
EJB Autorizacion
Acceso
Serv icio de Directorios LDAP EJB GUsuarios realize M antenim iento de los Datos
Pgina 6 de 40
2.2
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
+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..*
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
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)
Pgina 8 de 40
3.1
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
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.
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)
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
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
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
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
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
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.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
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.
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
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.
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
En Uso
Mtodo para obtener un objeto autenticacin del sistema de seguridad indicado por el constructor. Valor devuelto: Objeto de tipo Autenticacin
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
En Uso
Pgina 16 de 40
Pgina 17 de 40
4.2
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.
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
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
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>
Pgina 19 de 40
//Si el usuario es correcto y se va a permitir el acceso, antes obtenemos los parametros de usuario:
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 :
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
En Uso
En Uso
Pgina 21 de 40
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
Pgina 22 de 40
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
Pgina 24 de 40
4.4
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
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
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
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 :
En Uso
En Uso
public setParametroUsuario( String c_usuario, String c_apli, String c_parametro, String d_valor):int
En Uso
En Uso
En Uso
public getUsuarioAplicacion(
En Uso
Pgina 27 de 40
En Uso
En Uso
En Uso
4.6
Pgina 28 de 40
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
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.
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
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
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
Pgina 30 de 40
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
Pgina 31 de 40
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
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
Ejemplo de contenido:
pool-name=jdbc/SeguPoolDS pool-aaa=jdbc/SeguAAPoolDS pool-bbb=jdbc/SeguBBPoolDS pool-ccc=jdbc/SeguCCPoolDS pool-ddd=jdbc/SeguDDPoolDS
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
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
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
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
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.
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
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
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.
Pgina 35 de 40
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
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
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
3001
SEGU_USER
admin
SEGU_PASSWORD
Xxxx
SEGU_APP_SEGURIDAD
SistSegu
Pgina 37 de 40
6.2
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()
//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
// Recuperar los parmetros de usuario HashMap hmParametrosUsuario = objAutorizacion. getValoresParametros (usuarioAplicacion, nombreAplicacion);
.. .. .. ..
Pgina 39 de 40
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
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