Artigo
· Set. 6 2min de leitura

WebTerminal não funciona no IRIS 2024.2

Incluo esse post para ajudar os usuários de WebTerminal que atualizaram à versão IRIS 2024.2 -- (Build 247U) Tue Jul 16 2024 09:52:30 EDT -- liberada recentemente, ou estão considerando fazê-lo.

Essa versão 2024.2 contém uma mudança (DP-432503) que precisa que o usuário através do qual se conecta inicialmente ao Web Gateway (normalmente CSPSystem) deva ter permissões de leitura (READ) sobre a base de dados em que se encontra a classe de dispatching da aplicação web de tipo REST.

Para os casos em que não for assim, se gera um erro, mas retorna um estado HTTP 404 a quem faz a requisição no lugar do esperado HTTP 401

A princípio o problema será solucionado na 2024.3, referência DP-432898 / ALI048 : REST Login endpoints to return 401 HTTP error instead of 404, mas, ao ser a versão 2024.2 uma versão de tipo Continuous Delivery (CD), não se incluirá esta correção.

Um workaround possível é adaptar CSPSystem para que tenha permissão de leitura (READ) sobre a base de dados o namespace  em que está instalado o WebTerminal (ej. WEBTERMINAL).

Eu fiz assim:

  1. Crie um novo recurso de segurança %DB_WEBTERMINAL e atribuir à base de dados WEBTERMINAL no lugar de %DB_%DEFAULT.
  2. Crie um role %DB_WEBTERMINAL que outorgue ao dono do role de acesso RW ao recurso %DB_WEBTERMINAL.
  3. Crie outro role (eu o chamei de DBread_WEBTERMINAL) que dá ao dono do role acesso de somente leitura a esse recurso.
  4. Dê ao usuário CSPSystem o role DBread_WEBTERMINAL. Isto permite separar o bug da 2024.2.
  5. Edite a aplicação web /terminalsocket e adicione o role %DB_WEBTERMINAL no arquivo de Roles de Aplicação. Este passo é necessário porque WebTerminal inicialmente executa seu processo de websocket como UnknownUser e necessita modificar a informação de estado em sua base de dados incluso antes de que mude a executar como um usuário autenticado.

Uma técnica mais simples, mas menos segura seria:

  1. Crie um novo recurso %DB_WEBTERMINAL com privilégios RW, e atribua a base de dados WEBTERMINAL para que o use no lugar de %DB_%DEFAULT.

Mais detalhes em https://github.com/intersystems-community/webterminal/issues/155

Discussão (0)1
Entre ou crie uma conta para continuar