openxava / documentación / Seguridad y gestión de usuarios

Tabla de contenidos

Seguridad y gestión de usuarios
Gestión de usuarios
Restringir el acceso a ciertas acciones
Restringir el acceso a ciertas propiedades, referencias o colecciones (nuevo en v5.5)
Políticas para usuarios y contraseñas
LDAP
Invitado puede crearse una cuenta de usuario él mismo
Fecha de creación de usuario y registro de inicios de sesión
Recuperación de contraseña (nuevo en v5.7)
Se le pide al usuario su correo electrónico
Correo electrónico como nombre de usuario (nuevo en in v6.0)
Restringir acceso por IP (nuevo en v6.4)
Todas las funcionalidades en este artículo están disponible solo en XavaPro

Gestión de usuarios

XavaPro añade los módulos Roles, Módulos y Usuarios a tu aplicación, en una carpeta llamada Admin. Estos módulos te permiten configurar los niveles de acceso para los diferentes tipos de usuarios.
naviox-roles_es.png
Lo normal es crear un nuevo rol y asignarle algunos módulos. Entonces, en el módulo Usuarios, puedes escoger un usuario y asignarle el nuevo rol. Por defecto hay dos roles ya creados: admin con acceso a Usuarios, Roles, Módulos y Carpetas, y user con acceso a todos los módulos de tu aplicación.
Si quitas el acceso al módulo por defecto de una entidad, modificar y crear desde las referencias a esa entidad no estará disponible. Por ejemplo, si los usuarios de cierto rol no pueden acceder al módulo Cliente, tampoco podrán crear y modificar clientes desde el módulo Factura (nuevo en v5.3).
Esta gestión de usuarios está disponible sólo en XavaPro, con el OpenXava normal tienes que añadir los usuarios en el fichero naviox-users.properties. de la carpeta properties de tu proyecto.

Restringir el acceso a ciertas acciones

Si quieres que los usuarios de un determinado rol no pueda ejecutar algunas acciones, ve al módulo Roles y escoge ese rol para editarlo en modo detalle. Ahora haz click en el módulo donde quieras restringir las acciones. Te aparecerá un diálogo como este:
xavapro-restrict-actions_es.png
Selecciona las acciones que quieras excluir y pulsar Grabar. A partir de ahora, todos los usuario de ese rol no podrán ejecutar esas acciones en ese módulo.
Restringir el acceso a Nuevo y Grabar también restringe la posibilidad de crear y modificar desde las referencias, si se hace en el módulo por defecto para esa entidad. Por ejemplo, si restringes el acceso a la acción Grabar en el módulo Cliente, el usuario no podrá modificar los datos de Cliente desde el módulo Factura (nuevo en v5.3).
Restringir el acceso a acciones sólo está disponible en XavaPro.

Restringir el acceso a ciertas propiedades, referencias o colecciones (nuevo en v5.5)

Si quieres que los usuarios de un determinado rol no pueda acceder a ciertas propiedades, referencias o colecciones, ve al módulo Roles y escoge ese rol para editarlo en modo detalle. Ahora haz click en el módulo donde quieras restringir el acceso a los miembros. Te aparecerá un diálogo como este:
restrict-data-read-only-data-xavapro_es.png
Selecciona los miembros en Datos excluidos que quieras excluir y pulsar Grabar. A partir de ahora, todos los usuario de ese rol no podrán acceder a esos miembros. Fíjate que también tenemos Datos de solo lectura para marcar miembros que los usuarios del rol podrán leer pero no modificar.
Restringir el acceso a miembros sólo está disponible en XavaPro.

Políticas para usuarios y contraseñas

Hay un montón de opciones para configurar las políticas de gestión de usuarios y contraseñas. En la carpeta Admin encontrarás un módulo Configuración:
xavapro-configuration_es.png
Puedes configurar estas políticas para que tu sistema sea compatible con PCI-DSS, algo muy útil en aplicaciones bancarias.
Estas políticas para usuarios y contraseñas sólo están disponible en XavaPro.

LDAP

XavaPro permite a los usuarios ser autentificados vía LDAP. Para configurar LDAP edita el archivo naviox.properties y añade las siguientes entradas:
# Configuración LDAP
ldapHost=192.168.0.0
ldapDomain=XX
ldapDN=DC=XX,DC=XX,DC=XX
ldapPort=389
Si usas OpenLDAP omite la entrada ldapDomain (a partir de v5.9.1), como en este ejemplo:
# Ejemplo de configuración OpenLDAP
ldapHost=192.168.2.xxx
ldapDomain=
ldapDN=ou=people,dc=dgrtdf,dc=gov,dc=ar
ldapPort=389
Fíjate como ldapDomain no tiene valor.
Por defecto todos los usuarios son autentificados usando las contraseñas almacenadas por XavaPro. Para activar LDAP has de seleccionar los usuarios y marcar la opción Autentificar con LDAP:
naviox_ldap_es.png
El soporte de LDAP sólo están disponible en XavaPro.

Invitado puede crearse una cuenta de usuario él mismo

En la caja de identificación hay un vínculo etiquetado como CREAR CUENTA:
login-with-signup_es.png
El usuario puede pulsar en él para ir a un formulario de registro:
signup-form_es.png
Después de rellenar el formulario y pulsar el botón la cuenta de usuario se crea y además se inicia la sesión. Hay un rol self sign up para determinar los permisos de los usuarios autocreados.
Esta característica se puede desactivar en el módulo de configuración.
A partir de la v6.0 se puede mostrar una política de privacidad en la página de registro, el texto de la política de privacidad se obtiene de la entrada privacy_policy en los archivos de mensajes i18n. Es obligatorio que el usuario marque la casilla aceptando la política para poder hacer el registro. La fecha de la aceptación de la política se almacena junto con los datos del usuario. Puedes ocultar la política de privacidad usando el módulo de configuración.

Fecha de creación de usuario y registro de inicios de sesión

Ve al módulo de usuarios para ver esta información:
user-creation-date-sessions_es.png

Recuperación de contraseña (nuevo en v5.7)

El usuario puede recuperar su contraseña por sí mismo. Cuando falla al introducir la contraseña correcta se muestra un mensaje "¿Has olvidado tu contraseña?" con un vínculo:
recover-password-login_es.png
Cuando el usuario pulsa en el vínculo va a una página para introducir su correo electrónico:
enter-email-recover-password_es.png
Después de pulsar en el botón "Recuperar contraseña" un correo electrónico con instrucciones para recuperar la contraseña es enviado. Por supuesto, un usuario con ese correo electrónico ha de estar registrado en el sistema.
Para usar la funcionalidad de recuperación de contraseña has de configurar las propiedades de correo electrónico en xava.properties, algo como esto:
#SMTP related information
smtpHost=smtp.gmail.com
smtpPort=587
smtpUserId=micorreo@gmail.com
smtpUserPassword=micontrasena
smtpHostTrusted=true
smtpStartTLSEnable=true

Se le pide al usuario su correo electrónico

Para que este mecanismo de recuperación de contraseña funcione es necesario que cada usuario tenga su correo electrónico registrado en el sistema. Por tanto ahora si el usuario no tiene correo electrónico XavaPro se lo pregunta después de entrar:
enter-email-personal-data_es.png
Introducir el correo no es obligatorio, el usuario puede irse a cualquier otro módulo dejando el correo electrónico en blanco.
Este nuevo módulo "Mis datos personales" esta siempre disponible para que todos los usuarios puedan modificar sus propios datos personales.

Correo electrónico como nombre de usuario (nuevo en v6.0)

En el módulo de configuración hay una opción llamada Usar correo electrónico como nombre de usuario. Si la marcas será obligatorio que el usuario se registre usando un correo electrónico como nombre de usuario. Además, los usuarios ya creados pueden identificarse usando su cuenta de correo en lugar de su nombre.
La validación del correo electrónico al registrarse se puede personalizar con emailValidatorForSignUpClass en naviox.properties, por ejemplo:
emailValidatorForSignUpClass=com.miempresa.miaplicacion.MiValidadorCorreo
En este caso la lógica de MiValidadorCorreo (ha de implementar IPropertyValidator) se aplica al correo electrónico al registrarse. La validación por defecto para el correo electrónico verifica que la sintaxis es correcta, pero a veces queremos una validación diferente, como que sea un correo de empresa, por ejemplo. Puede hacer eso con tu propio validador de correo electrónico.

Restringir acceso por IP (nuevo en v6.4)

Es posible definir una "IP permitida" para un usuario de tal manera que ese usuario sólo pueda acceder desde esa IP. Para ello, ve al módulo Usuarios en la carpeta Admin, escoge un usuario y dale valor al campo IP permitida:
allowed-ip_en.png
Finalmente, pulsa en Grabar. Si el valor de IP permitida es blanco el usuario puede acceder desde cualquier IP.