Saltar a contenido

Sesiones, seguridad y licencia#

La configuración de Empowerment Center para las sesiones de los usuarios, el retardo tras intentos fallidos, la clave que cifra los secretos, las credenciales de servicio, la licencia y lo que enseña la pantalla de entrada. Los usuarios, los roles, el inicio de sesión único y SCIM se explican en Seguridad.

La clave de los secretos#

ECENTER_SECRETS_KEY (ecenter.secrets.encryption-key) es una clave AES de 256 bits en Base64. Cifra en la BD propia:

  • las contraseñas de las conexiones a las BD de los clientes;
  • la clave privada con que ECenter firma sus propios tokens (los de la incrustación y los del navegador sin interfaz).

Se genera con:

openssl rand -base64 32

Sin ella, o si no son 32 bytes en Base64, el backend no arranca.

Si cambia o se pierde, el backend arranca igual, pero:

  • las contraseñas guardadas no se pueden descifrar: cada conexión enseña «La contraseña guardada no se puede descifrar: vuelva a introducirla.», con Cambiar contraseña…, y no se puede usar hasta que se escriba;
  • la clave de firma de la instalación se sustituye sola por otra; los tokens que estuvieran en vuelo (5 minutos como mucho) dejan de valer.

Para cambiarla a propósito: arranque con la nueva y vuelva a escribir la contraseña de cada conexión en Administración › Conexiones.

Atención

Guarde la clave aparte y con la misma protección que las copias de la BD propia. Una copia de la BD sin la clave no descifra las contraseñas, y quien tenga las dos tiene las contraseñas de las BD de los clientes.

Sesiones#

La sesión de la aplicación se guarda en la BD propia: sobrevive a un reinicio del backend y la encuentra cualquier instancia. Va en la cookie SESSION, que el código de la página no puede leer (HttpOnly), con SameSite=Lax y, detrás de TLS, Secure.

Propiedad Variable Por defecto Qué es
spring.session.timeout ECENTER_SESSION_TIMEOUT 30m La caducidad de una sesión sin actividad.
ecenter.security.sessions.max-duration ECENTER_SESSION_MAX_DURATION 12h La duración máxima desde que se entra, aunque se siga usando. 0, sin máximo. Con el inicio de sesión único, volver a entrar no pide nada.
ecenter.security.sessions.cleanup-interval 1m Cada cuánto se borran las sesiones caducadas. Cada una deja en la auditoría su caducidad.
ecenter.security.sessions.cleanup-enabled true Borrarlas solas. Con false no las borra nadie: no lo cambie.

Además, algunos cambios en un usuario (inhabilitarlo, bloquearlo, eliminarlo, cambiarle el login o la contraseña, quitarle Administración del Sistema) cierran sus sesiones en todas las instancias: la lista completa está en Sesiones y entrada.

Las sesiones de la incrustación tienen sus propias reglas (véase Servicios).

Retardo tras intentos fallidos#

Tras varios fallos seguidos con el mismo login, ECenter hace esperar antes del siguiente intento (no bloquea la cuenta). Cómo funciona, con lo que ve el usuario, está en Sesiones y entrada.

Propiedad Por defecto Qué es
ecenter.security.login-delay.free-attempts 3 Fallos seguidos sin retardo.
ecenter.security.login-delay.initial 1s La primera espera.
ecenter.security.login-delay.max 60s La espera más larga.
ecenter.security.login-delay.reset-after 1h Lo que tarda en olvidarse un fallo.

Mientras dura la espera, POST /api/auth/login responde 429 con Retry-After y el código LOGIN_DELAYED, sin comprobar la contraseña. reset-after no puede ser menor que max, ni max menor que initial.

El primer administrador#

Propiedad Variable Qué es
ecenter.security.bootstrap-admin.login ECENTER_ADMIN_LOGIN El login del primer administrador.
ecenter.security.bootstrap-admin.password ECENTER_ADMIN_PASSWORD Su contraseña: de 10 caracteres a 72 bytes.

Solo se usan si la BD propia no tiene ningún usuario. Véase El primer administrador.

Credenciales de servicio#

Las credenciales con que otras aplicaciones entran en ECenter sin sesión (la API de consulta, el MCP, SCIM, la incrustación y el intercambio del metadata) caducan siempre. Cómo se crean está en Integraciones.

Propiedad Por defecto Qué es
ecenter.security.credentials.default-lifetime.<ÁMBITO> QUERY_API: 90d, MCP: 90d, SCIM: 365d, EMBED: 365d, METADATA_EXCHANGE: 90d La caducidad que se propone al crearla.
ecenter.security.credentials.max-lifetime.<ÁMBITO> QUERY_API: 365d, MCP: 365d, SCIM: 730d, EMBED: 365d, METADATA_EXCHANGE: 365d La caducidad más larga que se admite.
ecenter.security.credentials.max-active-per-holder 10 Las vigentes a la vez de un mismo titular (para rotarlas sin cortar el servicio).
ecenter.security.credentials.touch-interval 5m Cada cuánto, como mucho, se anota su último uso.
ecenter.security.credentials.retention 180d Lo que se conservan las revocadas o caducadas antes de purgarlas.
ecenter.security.credentials.expiry-notice 14d Con cuánta antelación se avisa por correo al titular de una credencial personal que caduca.
ecenter.security.credentials.maintenance-interval 1h Cada cuánto se purga y se avisa.
ecenter.security.bearer.public-url ECENTER_PUBLIC_URL La dirección para los enlaces de los avisos.
ecenter.security.bearer.access-audit-interval 1h Cada cuánto, como mucho, se anota en la auditoría el uso de un mismo cliente (por instancia).
ecenter.security.installation-keys.rotate-every 90d Cada cuánto se rota sola la clave con que firma la instalación (al menos un día). La anterior sigue verificando un rato más.

Los ámbitos son QUERY_API (API de consulta), MCP, SCIM, EMBED (incrustación) y METADATA_EXCHANGE (intercambio del metadata).

SCIM#

El aprovisionamiento de usuarios por SCIM (/api/scim/v2) se configura en ecenter.provisioning.*. Su uso, en Seguridad.

Propiedad Por defecto Qué es
ecenter.provisioning.scim.enabled true Con false, /api/scim/v2 responde 404.
ecenter.provisioning.scim.allowed-addresses (cualquiera) Las direcciones (CIDR) desde las que se admite: el proveedor de identidad o su agente.
ecenter.provisioning.scim.max-results 200 El máximo de una página.
ecenter.provisioning.scim.max-filter-scan 10000 Los usuarios que se evalúan en memoria con un filtro que no va por índice. Por encima, 400.
ecenter.provisioning.scim.max-payload 1MB El cuerpo más grande que se admite. Por encima, 413.
ecenter.provisioning.activity-retention 30d Lo que se conserva la actividad del aprovisionamiento.

El inicio de sesión único#

Los proveedores de identidad se dan de alta con los registros estándar de Spring Boot (spring.security.oauth2.client.registration.<id> para OIDC y spring.security.saml2.relyingparty.registration.<id> para SAML), en el application.yml propio, y ECenter añade por cada uno ecenter.security.sso.providers.<id>.*: el texto del botón, el atributo del login, el del correo y si al salir se cierra también la sesión del proveedor. Todo ello, con ejemplos, en Seguridad.

La licencia#

Propiedad Por defecto Qué es
ecenter.licensing.warn-days 30 Con cuántos días de antelación se avisa de que caduca la licencia.

Las claves públicas con que se comprueban las licencias van dentro de la aplicación y no se configuran. Véase La licencia.

La pantalla de entrada#

Lo que enseñan la pantalla de entrada y Acerca de Empowerment Center, sin iniciar sesión:

Propiedad Por defecto Qué es
ecenter.about.login-help ECENTER_LOGIN_HELP (vacía) Un texto de ayuda, hasta 500 caracteres.
ecenter.about.show-customer false Enseñar el cliente de la licencia. Viene apagado porque se ve antes de identificarse.
ecenter.about.links (ninguno) Hasta 5 enlaces del pie (label y url), solo http://, https:// o una ruta del propio servidor.
ecenter:
  about:
    login-help: ¿Problemas para entrar? Llame a la extensión 1234
    links:
      - label: Aviso legal
        url: https://intranet.example.org/aviso-legal
      - label: Ayuda
        url: https://intranet.example.org/ecenter

Véase también#