Artículo
· 29 ago, 2024 Lectura de 2 min

WebTerminal no funciona en IRIS 2024.2

Incluyo este post para ayudar a los usuarios de WebTerminal que han actualizado a la versión IRIS 2024.2 -- (Build 247U) Tue Jul 16 2024 09:52:30 EDT -- liberada recientemente o están considerando hacerlo.

Esa versión 2024.2 contiene un cambio (DP-432503) que precisa que el usuario a través del cual se conecta inicialmente el Web Gateway (normalmente CSPSystem) deba tener permisos de lectura (READ) sobre la base de datos en la que se encuentra la clase de dispatching de la aplicación web de tipo REST.

Para los casos en que eso no es así, se genera un error, pero retorna un estado HTTP 404 a quien hace la petición en lugar del esperado HTTP 401.

En principio el problema se solucionará en la 2024.3, referencia DP-432898 / ALI048 : REST Login endpoints to return 401 HTTP error instead of 404, pero, al ser la 2024.2 una versión de tipo Continuous Delivery (CD), no se incluirá esta corrección.

Un workaround posible es adaptar CSPSystem para que tenga permiso de lectura (READ) sobre la base de datos del namespace en el que instalaste el WebTerminal (ej. WEBTERMINAL).

Así es como yo lo he hecho:

  1. Crea un nuevo recurso de seguridad %DB_WEBTERMINAL y asignáselo a la base de datos WEBTERMINAL en lugar el %DB_%DEFAULT.
  2. Crea un role %DB_WEBTERMINAL que otorgue al poseedor del role de acceso RW al recurso %DB_WEBTERMINAL.
  3. Crea otro role (yo le he llamado DBread_WEBTERMINAL) que da al poseedor del role acceso de solo lectura (R) a ese recurso.
  4. Da al usuario CSPSystem el role DBread_WEBTERMINAL. Esto permite sortear el bug de la 2024.2.
  5. Edita la aplicación web /terminalsocket y añádele el role %DB_WEBTERMINAL en la ficha de Roles de Aplicación. Este paso es necesario porque WebTerminal inicialmente ejecuta su proceso de websocket como UnknownUser y necesita modificar la información de estado en su base de datos incluso antes de que cambia a ejecutarse como un usuario autenticado.

Una técnica más sencilla pero menos segura sería:

  1. Crea un nuevo recurso %DB_WEBTERMINAL con privilegios RW, y asígnalo a la base de datos WEBTERMINAL para que lo use en lugar de %DB_%DEFAULT.

Más detalles en https://github.com/intersystems-community/webterminal/issues/155

Comentarios (0)1
Inicie sesión o regístrese para continuar