Cliente del Módulo Común de Autenticación

Anuncio
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Módulo Común de Autenticación.
Tabla de contenidos
Introducción ...................................................................................................................... 1
Pasos previos ..................................................................................................................... 2
Arquitectura del Módulo Común de Autenticación ................................................................... 2
Módulos de Login JAAS ..................................................................................................... 2
Módulo Standalone ..................................................................................................... 2
Módulo Corporativo .................................................................................................... 4
Gestión de Errores .............................................................................................................. 6
Definición del ExceptionHandler a utilizar. .............................................................. 6
Operaciones a ejecutar ante un error .............................................................................. 6
Gestión de excepciones estándar. ................................................................................... 7
Canales de Acceso .............................................................................................................. 7
Datos de usuario suministrados por el módulo ......................................................................... 8
Usuarios de tipo “Empleado Público” ............................................................................ 9
Usuarios de tipo “Ciudadano” ...................................................................................... 9
Usuarios de tipo “Colaborador” .................................................................................... 9
Constantes ......................................................................................................................... 9
Detalle de escenarios ......................................................................................................... 14
Ciudadano ............................................................................................................... 15
Empleado publico ..................................................................................................... 15
Colaborador ............................................................................................................. 15
glosario ........................................................................................................................... 15
A. Principals de cada escenario ..................................................................................... 17
Introducción
El Módulo Común de Autenticación es el sistema back-end que facilita la autenticación de usuarios, de
forma transparente, contra todos los sistemas de datos manejados por el Principado de Asturias.
El Módulo Común de Autenticación actúa como un intermediario (un sistema fachada) evitando a las
aplicaciones la comunicación con múltiples sistemas y la manipulación de datos heterogéneos.
Figura 1. Esquema del Módulo Común de Autenticación
La comunicación entre las aplicaciones y el Módulo Común de Autenticación se realiza a través de un
servicio web: authService. Para facilitar el acceso a este servicio, en la distribución del FW-PA™ se incluye
una librería: security-client.jar.
El cliente para el Módulo Común de Autenticación se integra con el sistema de autenticación del FWPA™ (con el Filtro de Seguridad), a través de un módulo JAAS (ver apartado Seguridad en el Manual
de Desarrollo de Aplicaciones J2EE del FW-PA).
1
Pasos previos
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Módulo Común de Autenticación.
Antes de poder utilizar el Módulo Común de Autenticación , se necesita:
1. Solicitar la URL del servicio web del Módulo Común de Autenticación.
2. Dar de alta la aplicación a desarrollar en la base de datos del Módulo Común de Autenticación.
3. Cargar los roles de la aplicación y asignarlos a los usuarios que sean convenientes.
Arquitectura del Módulo Común de
Autenticación
El Módulo Común de Autenticación permite realizar la autenticación de usuarios para cualquier aplicación
que se utilice en el Principado de Asturias. Esencialmente, los tipos de usuarios que se pueden autenticar
son: Empleados de la administración (o de entidades colaboradoras) y Ciudadanos. En función del tipo de
usuario que acceda a la aplicación, el proceso de autenticación (datos necesarios y datos devueltos) será
diferente. Otros parámetros que también se tendrán en cuenta son: nivel de seguridad y canal de acceso.
Figura 2. Conexión con el Módulo Común Autenticación
La comunicación con el Módulo Común de Autenticación (a través del servicio web del mismo), se realiza
mediante el Módulo de Login (JAAS LoginModule): PrincastCorporativeLoginModule.
Este módulo se encargará de enviar los datos de autenticación al Módulo Común y recibir la respuesta
adecuada. Esta respuesta puede ser un error (excepción de tipo JAAS LoginException) si no se pudo
autenticar correctamente al usuario, o un conjunto de datos (JAAS Principal) del usuario, entre los
que se incluyen: identificador principal, datos personales de carácter general, roles, etc.
Módulos de Login JAAS
La conexión de una aplicación con el Módulo Común de Autenticación se realiza, de forma declarativa,
a través de la configuración JAAS. Para ello, basta con definir, en el fichero jaas-config.xml
una entrada que configure adecuadamente el módulo a utilizar (ver apartado “Seguridad” en Manual de
Desarrollo de aplicaciones J2EE del FW-PA). En la librería security-client.jar se incluyen dos
módulos de login: el módulo corporativo (PrincastCorporativeLoginModule) que da acceso
al Módulo Común de Autenticación y un módulo simulador (PrincastStandaloneLoginModule)
que permite trabajar contra un fichero de datos XML.
Módulo Standalone
Aquellas aplicaciones con necesidades de seguridad, que no dispongan de conectividad con los back-ends
del Principado de Asturias, en concreto con el Módulo Común de Autenticación, pueden utilizar el módulo
de autenticación standalone, basado en un fichero de permisos.
Como cualquier otro módulo JAAS, el módulo standalone se configura en el fichero
config.xml.
jaas-
<jaas>
<application name="Carrito" controlFlag="required">
<module>es.princast.framework.modules.security.standalone.StandaloneLoginModule</
2
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Módulo Común de Autenticación.
<options>
<option>
<name>USERS.FILE</name>
<value>WEB-INF/authorized-users.xml</value>
</option>
<option>
<name>NO.CACHING</name>
<value>false</value>
</option>
<option>
<name>ENCODED.PASSWORDS</name>
<value>false</value>
</option>
…
Para configurar un módulo Standalone , es importante tener en cuenta:
1. La
clase
del
módulo
es:
es.princast.framework.modules.security.standalone.StandaloneLoginModule.
2. Se debe indicar la ubicación del fichero de usuarios. Este fichero se configura bajo la opción de
nombre: USERS.FILE. Desde la versión 1.5 del FW-PA™, el path de este fichero se resuelve de forma
automática utilizando la clase PrincastPathResolver.
3. Por defecto, el módulo utiliza una caché para evitar releer el fichero de usuarios en cada acceso. Es
posible deshabilitar esta caché (aunque no recomendable por motivos de eficiencia) configurando con
el valor true la opción: NO.CACHING.
4. Las contraseñas, en el fichero de usuarios, se pueden escribir en plano o encriptadas. Para que el
módulo pueda trabajar con contraseñas encriptadas, se debe configurar con el valor true la opción
ENCODED.PASSWORDS. Las contraseñas deben estar encriptadas con el algoritmo SHA1 y una fuerza
de cifrado de 160 bits.
Authorized-users.xml
A partir de la versión 1.5 del FW-PA la sintaxis del fichero authorized-users.xml cambia, no se
mantiene la compatibilidad hacia atrás con versiones anteriores del fichero. En el fichero de usuarios se
incluirán los datos de todos los usuarios que se autenticarán correctamente en la aplicación, junto con sus
credenciales, principals, roles y dominios.
<users>
<user username="cliente" password="cliente" type="CITIZEN">
<principals>
<principal name="USERNAME" value="cliente"/>
<principal name="SURNAME1" value="Lopez"/>
<principal name="SURNAME2" value="Otro"/>
<principal name="NIF/NIE" value="12345678Z" identifier="true"/>
<principal name="ID THIRD PARTY" value="12345"/>
<principal name="AGENT USER TYPE" value="CITIZEN USER TYPE"/>
<principal name="ORGANIZATIONAL UNIT ID" value="1001"/>
<principal name="ORGANIZATIONAL UNIT NAME" value="Consejería de Infraestructuras
</principals>
<roles>
3
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
<role name="Citizen">
Módulo Común de Autenticación.
<domainRole name="grupo1" value="grupo1" procedure="no"/>
</role>
</roles>
</user>
</users>
Se escribirá una etiqueta <user> por cada uno de los usuarios. En dicha etiqueta se indicará el tipo de
actor, su nombre de usuario y su contraseña.
Bajo la etiqueta <principals> se detallará cualquier dato relevante acerca del usuario (nombre,
apellidos, dni, etc.), en el ejemplo superior, para los nombres de los principals se han utilizado constantes
de la clase SecurityConstants, de tal forma que los datos devueltos por este modulo son 100%
compatibles con los que podría devolver el modulo corporativo (Módulo Común de Usuarios), aunque esto
no es obligatorio, se puede utilizar cualquier nombre o valor para los principals. Uno de los principals puede
ser marcado como identificador principal del usuario, si no se marca ninguno, se utilizará el username.
Por último, se enumerarán todos los roles del usuario, utilizando al etiqueta <roles>. Dentro de cada
rol se especifican los dominios con el elemento <domainRole>, son agrupaciones lógicas de roles,
por ejemplo un dominio puede ser todos los usuarios de la oficina de comarcal de Oviedo. El atributo
procedure indica si un grupo es un procedimiento, esto sirve para las aplicaciones de tramitación, donde
es necesario saber los procedimientos que tiene cada usuario y se modelan mediante dominios con el
atributo procedure="yes" (por defecto tiene valor a no).
ExceptionHandler
Junto con el modulo standalone se suministra un ExceptionHanlder específico:
es.princast.framework.modules.security.
standalone.exceptions.SecurityExceptionHandler. Para más información al respecto,
véase el apartado siguiente: “Gestión de Errores”.
Módulo Corporativo
El módulo de login corporativo es un módulo JAAS (LoginModule) que ejecuta las tareas de
autenticación contra el Módulo Común de Autenticación, utilizando el servicio web authService.
Para utilizar este módulo, basta con escribir una entrada en el fichero jaas-config.xml para su
configuración:
<jaas>
<application name="USERMGMT" controlFlag="required">
<module>es.princast.framework.modules.security.corp.client.PrincastCorporativeLog
<options>
<option>
<name>wsURL</name>
<value>http://@wsurl.host@:@wsurl.port@/Auth12F/authService</value>
</option>
<option>
<name>canal-prompt</name>
<value>tipo_acceso</value>
</option>
<option>
<name>cliente-ip-prompt</name>
<value>ip_cliente</value>
</option>
4
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
<option>
Módulo Común de Autenticación.
<name>tipo-persona-prompt</name>
<value>tipo_persona</value>
</option>
<option>
<name>nif-prompt</name>
<value>nif</value>
</option>
<option>
<name>cif-prompt</name>
<value>cif</value>
</option>
<option>
<name>persona-fisica-id</name>
<value>F</value>
</option>
<option>
<name>persona-juridica-id</name>
<value>J</value>
</option>
<option>
<name>canal-web-id</name>
<value>web</value>
</option>
<option>
<name>canal-certificado-id</name>
<value>web</value>
</option>
<option>
<name>canal-telefonico-id</name>
<value>telefonico</value>
</option>
<option>
<name>canal-presencial-id</name>
<value>presencial</value>
</option>
</options>
</application>
</jaas>
Los puntos más importantes de esta configuración son:
1. El
nombre
de
la
clase
del
módulo
de
login
es:
es.princast.framework.modules.security.corp.client.PrincastCorporativeLoginModule
2. Bajo la opción wsURL debe definirse la dirección del servicio web authService.
3. El resto de opciones indican los nombres de parámetros de request bajo los que se suministrarán datos
del usuario a autenticar. Es conveniente copiar estos mismos valores.
Atención
Es importante que en la aplicación, bajo el parámetro de configuración: app-config, se defina
el mismo valor que el indicado en el atributo “ name” de la configuración JAAS. En este ejemplo:
USERMGMT.
5
ExceptionHandler
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Módulo Común de Autenticación.
Junto con el modulo standalone se suministra un ExceptionHanlder específico:
es.princast.framework.modules.security.corp.exceptions.SecurityExceptionHandler.
Para más información al respecto, véase el apartado siguiente: “Gestión de Errores”.
Gestión de Errores
Si, por cualquier motivo, en el Módulo Común de Autenticación, o en el propio LoginModule JAAS,
se produce un error, éste será transmitido, en forma de una excepción, al Filtro de Seguridad. Finalmente,
existe un componente llamado ExceptionHandler que se encargará de redirigir al usuario a la página
adecuada, en función del tipo de error.
Figura 3. Gestión de Errores de Autenticación
Definición del ExceptionHandler a utilizar.
Para definir que gestor de excepciones se quiere utilizar basta con, en cualquier módulo de configuración
registrado para el contexto SECURITY, definir la propiedad: “EXCEPTION.HANDLER”. El valor de esta
propiedad será el nombre, completamente cualificado, del gestor de excepciones.
Si no se define un gestor de excepciones, se utilizará el gestor por defecto:
es.princast.framework.modules.security.common.exceptions.StandardExceptionHandler.
Los gestores de excepciones específicos, suministrados con los dos módulos de login: corporativo y
standalone, son compatibles con el módulo estándar.
Operaciones a ejecutar ante un error
Cuando se produce un error, las posibles redirecciones que puede hacer el Gestor de Excepciones Estándar
son:
• Redirigir a página de “login”. Supone la redirección a una página en la que se solicita el par usuario/
contraseña o cualquier otra información que pudiera ser necesaria para autenticar.
• Redirigir a página de “no login”. Supone la redirección a una página en la que se informa de que
la autenticación anterior no tuvo éxito. Generalmente se indicará el motivo del error y se solicitarán los
datos que sean necesarios para un nuevo intento.
• Redirigir a página de “no roles”. Supone que el usuario se ha autenticado correctamente pero que
no tiene privilegio suficiente para acceder a un determinado recurso.
• Redirección a página de cambio de contraseña. Si la contraseña suministrada es correcta, pero ha
expirado, se puede forzar al usuario a que la actualice.
• Redirección a página de error general. Si la situación de error es distinta de las anteriores, se redirecciona
a una página de error.
Todas estas redirecciones se definen en el fichero “ princast-security-rules.xml ”, utilizando
las etiquetas “ <forward> ”. Si, por alguna razón, no se ha definido una página específica para tratar
una situación concreta, en ese caso, la redirección se hará sobre la página de error. Si no se ha definido
tampoco una página de error general, se enviará un código http de error: 515 .
6
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Módulo Común de Autenticación.
Gestión de excepciones estándar.
Las excepciones que puede controlar el gestor estándar, junto a las operaciones a realizar en cada uno de
los casos son las que se indican en la siguiente tabla:
Tabla 1. Tabla de excepciones de login
Tipo Excepción
Se dispara cuando...
Operación a ejecutar...
WrongProxiedUserIdentification
Se autentica a un par tramitador/ Redirecciona al forward: “nociudadano y falla la autenticación login”.
del tramitador.
InsufficientDataException
Falta algún dato necesario para la Redirecciona al forward: “noautenticación
login”.
WrongPasswordException Error en el par usuario/contraseña Redirecciona al forward: “nologin”.
RequiredPasswordException
Primer intento de acceso a un Redirecciona
recurso protegido
“login”.
al
forward:
Usuario
desconocido.
al
forward:
UnknownUserException
(username) Redirecciona
“login”.
X509CertificateExpectedException
Requerido certificado digital de Redirecciona a la IP y/o puerto de
cliente.
certificado digital (SSL-3)
InsufficientPrivilegesException
El usuario está autenticado Redirecciona al forward: “nopero no autorizado. No tiene roles”.
privilegios
suficientes
para
acceder al recurso.
RandomPwdPosRequiredException
Se requiere una autenticación por Redirecciona
posiciones de contraseña.
“login”.
al
forward:
Redirecciona
“error”.
al
forward:
UnmanagedLoginException Error incontrolado en el proceso Redirecciona
de autenticación.
“error”.
al
forward:
Error de autenticación general.
LoginException
Situación anómala en el proceso Si el warning # “Password
de login.
Expired”, redirecciona a forward:
“change-password”
LoginWarning
Canales de Acceso
El “Canal de Acceso” define el medio por el que un usuario accede a un recurso protegido. En la mayoría
de los casos, este canal, será el “canal web”, aunque, es posible que el acceso se realice intermediado
a través de un tramitador presencial o telefónico.
El canal de acceso que se está utilizando se indicará, al Módulo Común de Autenticación , utilizando el
parámetro http “ tipo_acceso ”. De momento, se definen tres canales de acceso posibles:
Canal web
Es el canal de acceso por defecto. Supone que el usuario está entrando a la
aplicación a través de una página de la propia aplicación. Se supondrá que se
accede a través de este canal cuando no exista en la petición http el parámetro
“tipo_acceso”, o bien, cuando éste valga la constante “web”. Para este
canal, se permiten los niveles de seguridad 0, 1 y 2 si el actor es un ciudadano
7
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
(ACTOR
“CITIZEN”
en princast-security-rules.xml), o
Módulo=Común
de Autenticación.
niveles 0 y 1 si el actor es un empleado público (ACTOR = “EMPLOYEE” en
princast-security-rules.xml)
Canal Telefónico
Este canal se utiliza para accesos intermediados a través de un sistema CRM
( Siebel™) procedentes de un call center. Para indicar el uso de este canal,
se utilizará el parámetro “ tipo_acceso”, con el valor “telefonico”.
Únicamente se permite tipo actor Ciudadano y niveles de seguridad 0 y 1.
Canal Presencial
Este canal es idéntico al anterior, con la salvedad de que el acceso procede de
una oficina de atención presencial y no de un call center. Se utilizará el valor
“presencial” para el parámetro “ tipo_acceso”. Únicamente se permite
tipo de actor Ciudadano y el nivel de seguridad 2.
El acceso a una aplicación a través del canal web se puede realizar desde cualquier ordenador conectado
a la red, sin embargo, el acceso a través de los canales intermediados (telefónico y presencial) únicamente
se puede hacer desde determinados ordenadores cuyas IPs sean reconocidas por el Módulo Común de
Autenticación .
Por lo tanto, es necesario, si se quieren utilizar estos canales, dar de alta en el Módulo Común de
Autenticación, todas las IPs que van a tener acceso a la aplicación (y el canal que pueden utilizar).
Datos de usuario suministrados por el módulo
Si el proceso de login se realiza con éxito, y el módulo puede autenticar correctamente al usuario,
se devolverán, en forma de Principals JAAS, un conjunto de datos recabados acerca del usuario.
Estos datos se ponen a disposición de la aplicación a través de los mecanismos de seguridad J2EE
estándar y a través del objeto JAAS Subject, alamacenado en el scope http Session, bajo la clave
SecurityGlobals.SUBJECT.
Los PrincipalsJAAS que se cargan al autenticar a un usuario son:
Identificador del Usuario
(PrincastIdentifier)
Se trata del identificador único del usuario. Este valor
será el que se obtenga cuando se ejecute el método
request.getUserPrincipal(). En todos los tipos de escenario, este valor será el NIF del usuario.
Datos personales
Se trata de un mapa de datos personales. En determinados
(PrincastCompositePrincipal)
escenarios (Colaborador) se puede devolver más de un objeto
de este tipo, aunque lo habitual es que haya sólo uno.
Roles (PrincastRole)
Identifica el rol que tiene el usuario. Es habitual que se devuelva
más de un objeto de este tipo.
Dominios (PrincastDomain)
Identifica los dominios de un usuario. Pueden ser de dos tipos
dominios puros, es decir agrupaciones de usuarios (procedure=no).
O procedimientos, que son tipos de tramites que puede hacer el
usuario (procedure=yes)
Warnings (PrincastWarning)
Se pueden incluir warnings si se da una situación anómala en el
proceso de autenticación. Por ejemplo, la contraseña está caducada.
Información de escenario
(ScenarioPrincipal)
Incluye informaciónd e carácter general acerca del escenario de
autenticación utilizado. Los datos que devuelve son: nivel de
seguridad, canal de acceso, tipo de actor, etc.
8
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
En general los datos que se devuelven
como resultado
del proceso de autenticación dependen del tipo de
Módulo Común
de Autenticación.
actor que se esté autenticando. Los datos concretos, en función del tipo de actor son:
Usuarios de tipo “Empleado Público”
Los usuarios de este tipo únicamente pueden autenticarse en los niveles de seguridad 0 y 1. Los empleados
públicos siempre se autorizan con su nombre de usuario y su contraseña.
De un empleado público se mantienen los siguientes datos personales: NIF (será el identificador principal),
nombre, apellidos, unidades organizativas a las que pertenece y una lista de roles que posee.
Cuando un empleado se autentica correctamente, las aplicaciones podrán obtener de la sesión, a través del
Subject, (ver apartado anterior) todos sus datos (en el caso de los roles solamente se podrán leer los
roles del empleado en la aplicación en la que se autentica). Los actores de este tipo, tendrán siempre, por
defecto, el rol “Empleado”.
Usuarios de tipo “Ciudadano”
Los ciudadanos pueden autenticarse en cualquiera de los tres niveles de seguridad (0, 1 ó 2), es decir, se
puede proteger un recurso (en el fichero princast-security-rules.xml) con usuario/contraseña
y/o con certificado digital (siempre y cuando sean ciudadanos los que van a acceder a dicho recurso).
Una vez autenticado el ciudadano, se ofrecerá a la aplicación (a través del Subject) los siguientes datos
personales: NIF (como identificador principal), nombre, apellidos, unidades organizativas (asociadas al
ciudadano en la aplicación, pueden ser varias), roles y, opcionalmente, otros datos que se obtengan en
el proceso (identificador de tercero, etc.). Los actores de este tipo, tendrán siempre, por defecto, el rol
“Ciudadano”.
Usuarios de tipo “Colaborador”
Los colaboradores se pueden identificar únicamente en los niveles de seguridad 0 y 1. La autenticación de
un colabora-dor es siempre un proceso de login múltiple. En una sola operación, se autenticará al propio
colaborador y al ciudadano al que representa. La autenticación se realiza con par usuario/contraseña para
el colaborador y con par NIF/posiciones de contraseña ó CIF/posiciones de contraseña.
Al autenticar correctamente a un colaborador se reciben dos juegos de datos personales (dos instancias
del Principal: PrincastCompositePrincipal), uno que contiene los datos del tramitador y
otro que contiene los datos del ciudadano. Estos dos Principals se distinguen por el valor almacenado
bajo la entrada: SecurityConstants.AUTHENTIFIED_USER_TYPE(recordemos que este tipo de
Principals son mapas de valores). Si el Principalcontiene datos del tramitador (une empleado),
el valor de este parámetro será: SecurityConstants.AGENT_USER_TYPE y si contiene datos del
ciudadano: SecurityConstants.CITIZEN_USER_TYPE.
Los roles en este tipo de actor serán el superconjunto de los roles del ciudadano y del tramitador
(empleado).
Constantes
Los datos personales, tanto de empleados como de ciudadanos, ofrecen a la aplicación como objetos de tipo
PrincastCompositePrincipal. Estos objetos son mapas de valores, en los cuales, cada entrada
contiene un dato concreto de usuario. Los datos concretos que un principal de estas características puede
tener son los siguientes:
/**
9
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
* Clave que identifica
protocolo
de acceso a un recurso
Módulo el
Común
de Autenticación.
*/
public static final String PROTOCOL = "PROTOCOL";
/**
* Constante que identifica identificadores de cualquier tipo.
*/
public static final String ID = "ID";
/**
* Constante que identifica el documento de identificador de una persona física (N
*/
public static final String NIFNIE = "NIF/NIE";
/**
* Constante que identifica el documento de identificador de una persona jurídica
*/
public static final String CIF = "CIF";
/**
* Constante que identifica un nombre de una persona física o jurídica.
*/
public static final String NAME = "NAME";
/**
* Constante que identifica el primer apellido de una persona física.
*/
public static final String SURNAME1 = "SURNAME1";
/**
* Constante que identifica el primer apellido de una persona jurídica.
*/
public static final String SURNAME2 = "SURNAME2";
/**
* Constante que define el nombre del identificador único de una persona en la bas
* Principado de Asturias
*/
public static final String ID_THIRD_PARTY = "ID THIRD PARTY";
/**
* Constante que define el identificador de Unidades Organizativas
*/
public static final String ORGANIZATIONAL_UNIT_ID = "ORGANIZATIONAL UNIT ID";
/**
* Constante que define el nombre de Unidades Organizativas
*/
public static final String ORGANIZATIONAL_UNIT_NAME = "ORGANIZATIONAL UNIT NAME";
/**
* Constante que identifica el nombre de un agente tramitador
*/
public static final String PROXY_AGENT_USERNAME = "PROXY AGENT";
10
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Módulo Común de Autenticación.
/**
* Constante de identifica el nombre de un usuario
*/
public static final String USERNAME = "USERNAME";
/**
* Constante que identifica un certificado digital
*/
public static final String X509_DIGITAL_CERTIFICATE =
"javax.servlet.request.X509Certificate";
/**
* Constante que identifica un conjunto de datos personales
*/
public static final String PERSONAL_DATA = "PERSONAL DATA";
/**
* Constante que define el nivel de seguridad 0
*/
public static final String SECURITY_LEVEL_0 = "0";
/**
* Constante que define el nivel de seguridad 1
*/
public static final String SECURITY_LEVEL_1 = "1";
/**
* Constante que define el nivel de seguridad 2
*/
public static final String SECURITY_LEVEL_2 = "2";
/**
* Constante que identifica la contraseña de un usuario
*/
public static final String PASSWORD = "PASSWORD";
/**
* Constante que identifica una dirección IP
*/
public static final String IP = "IP";
/**
* Constante que identifica un tipo de actor
*/
public static final String ACTOR_TYPE = "ACTOR TYPE";
/**
* Constante que identifica un nivel de seguridad
*/
public static final String LOGIN_LEVEL = "LOGIN LEVEL";
/**
* Constante que identifica un conjunto de roles
11
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
*/
Módulo Común de Autenticación.
public static final String ROLES = "ROLES";
/**
* Constante que identifica un Principal primario (identificador único)
*/
public static final String PRIMARY_PRINCIPAL = "PRIMARY_PRINCIPAL";
/**
* Constante que identifica un conjunto de Principals secundario
*/
public static final String SECONDARY_PRINCIPALS = "SECONDARY_PRINCIPALS";
/**
* Constante que identifica una aplicacion
*/
public static final String ID_APP = "ID APP";
/**
* Constante que identifica un tipo de actor Empleado Público.
*/
public static final String PUBLIC_EMPLOYEE_ACTOR = "EMPLOYEE";
/**
* Constante que identifica un tipo de actor Empleado Ciudadano.
*/
public static final String CITIZEN_ACTOR = "CITIZEN";
/**
* Constante que identifica un tipo de actor Colaborador (tramitador).
*/
public static final String PARTNER_ACTOR = "COLABORADOR";
/**
* Constante que identifica un canal de acceso
*/
public static final String CHANNEL = "CHANNEL";
/**
* Constante que identifica el canal de acceso por Portal web.
*/
public static final String PORTAL_CHANNEL = "PORTAL";
/**
* Constante que identifica la razón social de una persona jurídica.
*/
public static final String RAZON_SOCIAL = "RAZON SOCIAL";
/**
* Constante que identifica al tipo de persona física.
*/
public static final String PERSONA_FISICA_TYPE = "F";
/**
12
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
* Constante que identifica
aldetipo
de persona jurídica
Módulo Común
Autenticación.
*/
public static final String PERSONA_JURIDICA_TYPE = "J";
/**
* Constante que identifica el canal de acceso presencial.
*/
public static final String PRESENTIAL_CHANNEL = "PRESENTIAL";
/**
* Constante que identifica el canal de acceso telefónico.
*/
public static final String PHONE_CHANNEL = "PHONE";
/**
* Constante que identifica posiciones de una contraseña.
*/
public static final String PASSWORD_POSITIONS = "PASSWORD_POSITIONS";
/**
* Constante que indica el numero de posiciones aleatorias de uan contraseña
* a utilizar en la autentificación.
*/
public static final int RANDOM_POSITIONS_SIZE = 3;
/**
* Constante que identifica al tipo de identificador fiscal.
*/
public static final String IF_TYPE = "IF_TYPE";
/**
* Constante que identifica el identificador fiscal NIF.
*/
public static final String IF_NIF_TYPE = "NIF";
/**
* Constante que identifica el identificador fiscal CIF.
*/
public static final String IF_CIF_TYPE = "CIF";
/**
* Constante que identifica el identificador fiscal NIE.
*/
public static final String IF_NIE_TYPE = "NIE";
/**
* Constante que identifica el Principal que indica que una contraseña ha expirado
*/
public static final String PASSWORD_EXPIRED = "PASSWORD EXPIRED";
/**
* Constante que identifica el conjunto de Principals que suponen warnings de la o
*/
public static final String LOGIN_WARNING = "LOGIN WARNINGS";
13
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Módulo Común de Autenticación.
/**
* Constante que identifica el conjunto de Principals que suponen datos del usuari
*/
public static final String USER_DATA = "USER DATA";
/**
* Constante que identifica el conjunto de Principals que suponen datos del escena
*/
public static final String SCENARIO_DATA = "SCENARIO DATA";
/**
* Constante que identifica el tipo de usuario cuyos datos contiene un Principal c
* @see es.princast.framework.facilities.security.PrincastCompositePrincipal
*/
public static final String AUTHENTIFIED_USER_TYPE = "USER TYPE";
/**
* Constante que identifica un Principal que contiene datos de un ciudadano autent
*/
public static final String CITIZEN_USER_TYPE = "CITIZEN USER TYPE";
/**
* Constante que identifica un Principal que contiene datos de un agente tramitado
*/
public static final String AGENT_USER_TYPE = "AGENT USER TYPE";
/**
* Constante que identifica un Principal que contiene datos de un empleado
*/
public static final String EMPLOYEE_USER_TYPE = "EMPLOYEE USER TYPE";
/**
* Longitud mínima permitida para las contraseñas
*/
public static final int MIN_PASSWORD_LENGTH = 8;
/**
* Conjunto de caracteres no permitidos en las contraseñas
*/
public static final String PASSWD_FORBIDDEN_CHARS = "@#•~$%&/()?¿¡+`}{*^[]¨-_<>\\ª
/**
* Caracter que representa un "hueco vacío" en una contraseña.
*/
public static final char PASSWD_EMPTY_CHAR = PASSWD_FORBIDDEN_CHARS.charAt(0);
Detalle de escenarios
Las operaciones necesarias para controlar el acceso de un usuario pueden ser sensiblemente diferentes
en función de las circunstancias concretas de cada acceso. Un conjunto de parámetros que definen un
medio de acceso común es un escenario. En función del escenario de autenticación que esté en curso,
14
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
se aplicará una lógica diferente.
En función
los datos devueltos por el módulo pueden ser
Módulo
Comúndel
de escenario,
Autenticación.
también diferentes.
Ciudadano
Los escenarios de ciudadano indican el acceso a un recurso protegido para el tipo de actor CITIZEN.
Estos accesos están reservados a ciudadanos, lo cuales, pueden acceder a la aplicación a través de cualquier
canal (presencial, telefónico, web).
Los recursos, para ciudadanos, pueden estar protegidos con bajo cualquier nivel de seguridad: 0, 1 ó 2. La
lógica de autenticación puede variar en función del canal de acceso (parámetro tipo_canal). Los datos
finales (resultado de la autenticación) son los mismos para todos los casos.
Portal
El escenario de login de portal se aplica cuando un usuario (ciudadano) accede a un recurso
protegido, directamente, a través del portal (Internet). Se trata del escenario por defecto (parámetro
tipo_canal=web o nulo). Se puede autenticar al ciudadano utilizando par NIF/contraseña o certificado
digital.
Telefónico
En este escenario, el ciudadano accede al recurso a través de un tramitador Siebel, estando el ciudadano
al otro lado de la línea telefónica. El tipo de canal (parámetro tipo_canal = telefonico) toma
el valor: telefonico. Se realizará autenticación, además, de la dirección IP del tramitador. El control de
acceso se realiza exclusivamente por el par: NIF/posiciones aleatorias de la contraseña (del ciudadano).
Presencial
En este caso, el ciudadano accede, de forma presencial, a la aplicación a través de un tramitador. El tipo de
canal (parámetro tipo_canal = presencial) toma el valor: presencial. Se realizará autenticación,
además, de la dirección IP del tramitador. El control de acceso se realiza, por parte del tramitador,
utilizando el DNI del ciudadano.
Empleado publico
El escenario de acceso para empleados públicos se identifica por el tipo de actor bajo el que se define el
recurso: “EMPLOYEE”. Este escenario está reservado para recursos a los que únicamente puede acceder
un empleado para realizar su trabajo diario. A propósito de este escenario, un tramitador (empleado que
realiza un trabajo en nombre de un ciudadano) no se considera un empleado.
En este caso, el acceso se controla únicamente con el par: usuario/contraseña.
Colaborador
Si a un recurso puede acceder un ciudadano, pudiendo estar este intermediado por un empleado o
colaborador, se aplica el tipo de actor: “COLABORADOR”. En este tipo de escenarios se debe realizar una
autenticación doble: del tramitador y del ciudadano. La autenticación del tramitador siempre se realiza con
el par: usuario/contraseña. La del ciudadano, con el par NIF/posiciones aleatorias de contraseña o CIF/
posiciones aleatorias de contraseña (si se trata de una persona jurídica).
glosario
15
Actor
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Usuario
que puede acceder a un recurso protegido. Un Actor
Módulo
Comúntipo
de Autenticación.
puede ser: ciudadano, empleado público o colaborador. El tipo de
actor determinará la lógica de autenticación empleada, así como los
datos requeridos y los datos personales devueltos a la aplicación.
authService
Nombre del servicio web delMódulo Común de Autenticación. El
servicio authService es la fachada para acceder al módulo.
Canal de Acceso
Vía de acceso a un recurso protegido. El canal de acceso puede ser:
web, presencial o telefónico.
Constantes de Seguridad
Las constantes de seguridad (clase SecurityConstants) son el
conjunto de valores que se utilizan para nombrar parámetros de login
y para identificar los datos que se devuelven a la aplicación cuando se
realiza una autenticación correcta.
Escenario
Un escenario es un conjunto de parámetros que definen una lógica de
autenticación, parámetros de entrada y datos de salida comunes. Los
escenarios se definen en función del tipo de actor, el canal de acceso
y el nivel de seguridad.
Excepción de Login
Tipo de excepción java que desciende de la clase JAAS
LoginException. Indica cualquier situación controlada por la
cual no se puede autenticar correctamente al usuario: contraseña
equivocada, privilegios insuficientes, etc.
Gestor de Errores
El gestor de errores (ExceptionHandler) es el objeto en el cual
se delega la manipulación de cualquier excepción producida durante
el proceso de autenticación. El gestor de excepciones será capaz de
redireccionar el flujo de la aplicación a la URL adecuada para cada
tipo de error.
Identificador
El Identificador (PrincastIdentifier) es el dato que permite
identificar unívocamente al usuario autenticado. Identificador de
tercero. Es un identificador interno que tienen los ciudadanos que
trabajan con el Principado de Asturias.
Módulo de Login
Clase que implementa el interfaz JAAS: LoginModule. Es un tipo
de clase que puede realizar la autenticación de un usuario y cargar en
un objeto todos los datos que se obtengan de dicha operación.
Nivel de Seguridad
El nivel de seguridad es un número que identifica el tipo de control
de acceso que se aplicará a un recurso determinado. Nivel 0 = No hay
control de seguridad. Nivel 1 = Control por par usuario /contraseña.
Nivel 2 = Con-trol con certificado digital de cliente.
Principal
Cualquier dato sobre el usuario obtenido al realizar el proceso de
Login.
Principal Compuesto
Conjunto de datos personales del usuario autenticado. Se trata de un
map que contiene pares dato-valor. Algunos de estos datos pueden ser:
nombre, apellidos, NIF, unidades organizativas, etc.
Principal de Escenario
Conjunto de datos del escenario de autenticación utilizado en un
proceso de login. Estos datos pueden ser: nivel de seguridad, canal,
actor, etc.
16
Rol
MANUAL DE DESARROLLO DE
APLICACIONES J2EE. Cliente del
Privilegio
delAutenticación.
usuario en una aplicación.
Módulo
Común de
Siebel
Sistema CRM del Principado de Asturias a través del cual, los
tramitadores pueden acceder a las aplicaciones de portal en nombre
de un ciudadano.
Subject
Objeto JAAS que contiene todos los Principals de un usuario
autenticado.
Warning
Situación anómala en el proceso de autenticación. Un warning no
supone un error. Si se da un warning el acceso esta garantizado para
el usuario.
A. Principals de cada escenario
Figura A.1. Tabla de Principals devueltos por cada escenario
17
Descargar